Add a few more menu items.
[obnox/wireshark/wip.git] / plugins / ethercat / packet-ams.h
1 /* packet-ams.h
2  *
3  * $Id$
4  *
5  * Copyright (c) 2007 by Beckhoff Automation GmbH
6  *
7  * Wireshark - Network traffic analyzer
8  * By Gerald Combs <gerald@wireshark.org>
9  * Copyright 1998 Gerald Combs
10  * 
11  * This program is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU General Public License
13  * as published by the Free Software Foundation; either version 2
14  * of the License, or (at your option) any later version.
15  * 
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  * 
21  * You should have received a copy of the GNU General Public License
22  * along with this program; if not, write to the Free Software
23  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  */
25
26 #ifndef __PACKET_AMS_H__
27 #define __PACKET_AMS_H__
28
29 /* FIXED PORTS */
30
31 #define AMSPORT_ROUTER            1
32 #define AMSPORT_DEBUGGER          2
33
34 #define AMSPORT_LOGGER            100
35 #define AMSPORT_EVENTLOG          110
36 #define AMSPORT_R0_RTIME          200
37 #define AMSPORT_R0_TRACE          (AMSPORT_R0_RTIME+90)
38 #define AMSPORT_R0_IO             300
39 #define AMSPORT_R0_SPS            400
40 #define AMSPORT_R0_NC             500
41 #define AMSPORT_R0_NCSAF          501
42 #define AMSPORT_R0_NCSVB          511
43 #define AMSPORT_R0_ISG            550
44 #define AMSPORT_R0_CNC            600
45 #define AMSPORT_R0_LINE           700
46 #define AMSPORT_R0_PLC            800
47 #define AMSPORT_R0_CAM            900
48 #define AMSPORT_R0_CAMTOOL        950
49
50 #define AMSPORT_R0_IOPORTBEGIN    1000
51 #define AMSPORT_R0_IOPORTEND      1199
52
53 #define AMSPORT_R0_USER           2000
54
55 #define AMSPORT_R3_SYSSERV        10000
56 #define AMSPORT_R3_CTRLPROG       10000
57 #define AMSPORT_R3_SYSCTRL        10001
58 #define AMSPORT_R3_SYSSAMPLER     10100
59 #define AMSPORT_R3_TCPRAWCONN     10200
60 #define AMSPORT_R3_TCPIPSERVER    10201
61 #define AMSPORT_R3_SYSMANAGER     10300
62 #define AMSPORT_R3_SMSSERVER      10400
63 #define AMSPORT_R3_MODBUSSERVER   10500
64 #define AMSPORT_R3_PLCCONTROL     10800
65 #define AMSPORT_R3_NCCTRL         11000
66 #define AMSPORT_R3_NCINTERPRETER  11500
67 #define AMSPORT_R3_STRECKECTRL    12000
68 #define AMSPORT_R3_CAMCTRL        13000
69 #define AMSPORT_R3_SCOPE          14000
70 #define AMSPORT_R3_SINECH1        15000
71 #define AMSPORT_R3_CONTROLNET     16000
72 #define AMSPORT_R3_OPCSERVER      17000
73 #define AMSPORT_R3_OPCCLIENT      17500
74
75 #define AMSPORT_R3_CUSTOMER_FIRST 25000
76 #define AMSPORT_R3_CUSTOMER_LAST  25999
77
78 #define AMSPORT_FIRST 1
79 #define AMSPORT_LAST  0xFFFE
80
81 #define AMSPORT_UNFIXEDPORT 0
82 #define AMSPORT_USEDEFAULT  0xFFFF
83
84 #define AMSPORT_IOBOXBEGIN_USB 0x6E00
85 #define AMSPORT_IOBOXEND_USB   0x6EFF
86 #define AMSPORT_IODEVBEGIN     0x7000
87 #define AMSPORT_IODEVEND       0x70FF
88 #define AMSPORT_IOBOXBEGIN     0x7100
89 #define AMSPORT_IOBOXEND       0x7FFF
90
91 #define AMSPORT_FREEBEGIN 0x8000
92 #define AMSPORT_FREEEND   0xBFFF
93
94
95 #define AMSPORT_NAMESIZE 31
96
97 /* Port types */
98 typedef enum
99 {
100    PORTTYPE_INVALID    = -1,
101    PORTTYPE_ROUTER     = 0x00,
102    PORTTYPE_R3PORT     = 0x01,
103    PORTTYPE_R0CTRLPORT = 0x02,
104    PORTTYPE_R0TASKPORT = 0x03,
105    PORTTYPE_R0IOPORT   = 0x04,
106    PORTTYPE_TPPORT     = 0x05,
107    PORTTYPE_MAXVAL     = 0xFF
108 }AMSPORT_TYPE;
109
110 /* Command IDs */
111
112 #define AMSCMD_LOGMESSAGE       0x0001
113 #define AMSCMD_ROUTERSHUTDOWN   0x0002
114 #define AMSCMD_ROUTERACTIVATED  0x0003
115 #define AMSCMD_SYSTEMREMOVED    0x0004
116 #define AMSCMD_CLOSECONNECTION  0x0005
117 #define AMSCMD_SIGNALSTART      0x00FB
118 #define AMSCMD_SIGNALSTOP       0x00FC
119 #define AMSCMD_HANDLERETAINDATA 0x00FD
120 #define AMSCMD_DEVICECONFIGID   0x00FE
121 #define AMSCMD_DOWNLOADSYMBOLS  0x00FF
122
123 #define AMS_ERRLOGCMDS          0x100
124
125 #define AMS_TASKCMDS            0x500
126 #define AMS_CTRLCMDS            0x600
127
128 #define AMS_ROUTERCMDS          0x900
129 #define AMS_RTIMECMDS           0x1000
130 #define AMS_TRACECMDS           (AMS_RTIMECMDS+0x900)
131 #define AMS_IOCMDS              0x2000
132 #define AMS_C1220CMDS           (AMS_IOCMDS+0x100)
133 #define AMS_FCxxxxCMDS          (AMS_IOCMDS+0x200)
134 #define AMS_SPSCMDS             0x3000
135 #define AMS_NCCMDS              0x4000
136 #define AMS_PLCCMDS             0x5000
137 #define AMS_LINECMDS            0x6000
138 #define AMS_CAMCMDS             0x7000
139
140 #define AMS_CMDSPECIFIC         0x8000
141
142
143 #define AMSERRCODEISWARNING     0x80000000
144
145 /* Error Arrays */
146
147 #define ERR_ROUTERERRS    0x0500
148 #define ERR_TASKERRS      0x0600
149 #define ERR_ADSERRS       0x0700
150 #define ERR_SYSSMPLERRS   0x0800
151 #define ERR_RTIMEERRS     0x1000
152 #define ERR_TRACEERRS     (ERR_RTIMEERRS+0x900)
153 #define ERR_IOERRS        0x2000
154 #define ERR_DPSLAVE       (ERR_IOERRS+0x900)
155 #define ERR_CP5412A2      (ERR_IOERRS+0xA00)
156 #define ERR_ASP           (ERR_IOERRS+0xB00)
157 #define ERR_CANSLAVE      (ERR_IOERRS+0xC00)
158 #define ERR_CIF30         (ERR_IOERRS+0xD00)
159 #define ERR_IBSSLAVE      (ERR_IOERRS+0xE00)
160 #define ERR_SPSERRS       0x3000
161 #define ERR_NCERRS        0x4000
162 #define ERR_PLCERRS       0x6000
163 #define ERR_STRKERRS      0x7000
164
165 #define ERR_PRJSPECIFIC   0x7800
166
167 #define ERR_DRIVEERRS_C3D 0xD000
168 #define ERR_DRIVEERRS_C2D 0xE000
169 #define ERR_DRIVEERRS_C1D 0xF000
170
171
172 /* Global Error codes */
173 #define ERR_NOERROR               0
174 #define ERR_INTERNAL              1
175 #define ERR_NORTIME               2
176 #define ERR_ALLOCLOCKEDMEM        3
177 #define ERR_INSERTMAILBOX         4
178 #define ERR_WRONGRECEIVEHMSG      5
179 #define ERR_TARGETPORTNOTFOUND    6
180 #define ERR_TARGETMACHINENOTFOUND 7
181 #define ERR_UNKNOWNCMDID          8
182 #define ERR_BADTASKID             9
183 #define ERR_NOIO                  10
184 #define ERR_UNKNOWNAMSCMD         11
185 #define ERR_WIN32ERROR            12
186 #define ERR_PORTNOTCONNECTED      13
187 #define ERR_INVALIDAMSLENGTH      14
188 #define ERR_INVALIDAMSNETID       15
189 #define ERR_LOWINSTLEVEL          16
190 #define ERR_NODEBUGINTAVAILABLE   17
191 #define ERR_PORTDISABLED          18
192 #define ERR_PORTALREADYCONNECTED  19
193 #define ERR_AMSSYNC_W32ERROR      20
194 #define ERR_AMSSYNC_TIMEOUT       21
195 #define ERR_AMSSYNC_AMSERROR      22
196 #define ERR_AMSSYNC_NOINDEXINMAP  23
197 #define ERR_INVALIDAMSPORT        24
198 #define ERR_NOMEMORY              25
199 #define ERR_TCPSEND               26
200 #define ERR_HOSTUNREACHABLE       27
201 #define ERR_INVALIDAMSFRAGMENT    28
202
203
204 /* ROUTER */
205 #define ROUTERERR_NOLOCKEDMEMORY   0 + ERR_ROUTERERRS
206 #define ROUTERERR_RESIZEMEMORY     1 + ERR_ROUTERERRS
207 #define ROUTERERR_MAILBOXFULL      2 + ERR_ROUTERERRS
208 #define ROUTERERR_DEBUGBOXFULL     3 + ERR_ROUTERERRS
209 #define ROUTERERR_UNKNOWNPORTTYPE  4 + ERR_ROUTERERRS
210 #define ROUTERERR_NOTINITIALIZED   5 + ERR_ROUTERERRS
211 #define ROUTERERR_PORTALREADYINUSE 6 + ERR_ROUTERERRS
212 #define ROUTERERR_NOTREGISTERED    7 + ERR_ROUTERERRS
213 #define ROUTERERR_NOMOREQUEUES     8 + ERR_ROUTERERRS
214 #define ROUTERERR_INVALIDPORT      9 + ERR_ROUTERERRS
215 #define ROUTERERR_NOTACTIVATED     10 + ERR_ROUTERERRS
216 #define ROUTERERR_FRAGMENTBOXFULL  11 + ERR_ROUTERERRS
217 #define ROUTERERR_FRAGMENTTIMEOUT  12 + ERR_ROUTERERRS
218 #define ROUTERERR_TOBEREMOVED      13 + ERR_ROUTERERRS
219
220 #define TASKERR_UNKNOWNTASKTYPE 0 + ERR_TASKERRS
221 #define TASKERR_TASKTERMINATED  1 + ERR_TASKERRS
222 #define TASKERR_EVENTTIMEOUT    2 + ERR_TASKERRS
223
224
225 /* System Sampler */
226 #define SMPLERR_INTERNAL    0 + ERR_SYSSMPLERRS
227 #define SMPLERR_INVALIDTYPE 1 + ERR_SYSSMPLERRS
228
229
230 /* RTIME */
231 #define RTERR_INTERNAL             0 + ERR_RTIMEERRS
232 #define RTERR_BADTIMERPERIODS      1 + ERR_RTIMEERRS
233 #define RTERR_INVALIDTASKPTR       2 + ERR_RTIMEERRS
234 #define RTERR_INVALIDSTACKPTR      3 + ERR_RTIMEERRS
235 #define RTERR_PRIOEXISTS           4 + ERR_RTIMEERRS
236 #define RTERR_NOMORETCB            5 + ERR_RTIMEERRS
237 #define RTERR_NOMORESEMAS          6 + ERR_RTIMEERRS
238 #define RTERR_NOMOREQUEUES         7 + ERR_RTIMEERRS
239 #define RTERR_SHUTDOWNTIMEOUT      8 + ERR_RTIMEERRS
240 #define RTERR_CHECKHOSTOSNOPCR     9 + ERR_RTIMEERRS
241 #define RTERR_CHECKHOSTOSNOIDT     10 + ERR_RTIMEERRS
242 #define RTERR_CHECKHOSTOSNOPHYSMEM 11 + ERR_RTIMEERRS
243 #define RTERR_CHECKHOSTOSMAPERR    12 + ERR_RTIMEERRS
244 #define RTERR_EXTIRQALREADYDEF     13 + ERR_RTIMEERRS
245 #define RTERR_EXTIRQNOTDEF         14 + ERR_RTIMEERRS
246 #define RTERR_EXTIRQINSTALLFAILED  15 + ERR_RTIMEERRS
247 #define RTERR_IRQLNOTLESSOREQUAL   16 + ERR_RTIMEERRS
248 #define RTERR_SYSCLOCKFAILURE      17 + ERR_RTIMEERRS
249
250
251 /* TRACE */
252 #define TRACEERR_REGISTRY 0 + ERR_TRACEERRS
253 #define TRACEERR_MEMMAP   1 + ERR_TRACEERRS
254 #define TRACEERR_NOTAVAIL 2 + ERR_TRACEERRS
255
256
257 /* IO */
258 #define IOERR_INTERNAL                        (0 + ERR_IOERRS)
259 #define IOERR_BADCARDNO                       (1 + ERR_IOERRS)
260 #define IOERR_INVALIDCARDADDR                 (2 + ERR_IOERRS)
261 #define IOERR_CDLLISTFULL                     (3 + ERR_IOERRS)
262 #define IOERR_BADCDLPARAM                     (4 + ERR_IOERRS)
263 #define IOERR_OPENIOFAILED                    (5 + ERR_IOERRS)
264 #define IOERR_RESETIOFAILED                   (6 + ERR_IOERRS)
265 #define IOERR_UNKNOWNDEVICE                   (7 + ERR_IOERRS)
266 #define IOERR_UNKNOWNDEVICEID                 (8 + ERR_IOERRS)
267 #define IOERR_UNKNOWNIMAGEID                  (9 + ERR_IOERRS)
268 #define IOERR_GETIOSTATE                      (10 + ERR_IOERRS)
269 #define IOERR_BADIMAGEID                      (11 + ERR_IOERRS)
270 #define IOERR_NOMORECLIENTSPACE               (12 + ERR_IOERRS)
271 #define IOERR_CLIENTINFONOTFOUND              (13 + ERR_IOERRS)
272 #define IOERR_CDLNOTINUSE                     (14 + ERR_IOERRS)
273 #define IOERR_TIMEOUTWITHDEVICE               (15 + ERR_IOERRS)
274 #define IOERR_C1220FUNC_1                     (16 + ERR_IOERRS)
275 #define IOERR_C1220FUNC_9                     (17 + ERR_IOERRS)
276 #define IOERR_C1220FUNC_C                     (18 + ERR_IOERRS)
277 #define IOERR_C1220FUNC_10                    (19 + ERR_IOERRS)
278 #define IOERR_C1220FUNC_1_MAXSEND             (20 + ERR_IOERRS)
279 #define IOERR_C1220FUNC_1_ADDRSET             (21 + ERR_IOERRS)
280 #define IOERR_C1220FUNC_1_BREAK               (22 + ERR_IOERRS)
281 #define IOERR_C1220FUNC_1_BREAK0              (23 + ERR_IOERRS)
282 #define IOERR_C1220FUNC_1_BREAK1              (24 + ERR_IOERRS)
283 #define IOERR_C1220FUNC_1_BREAK2              (25 + ERR_IOERRS)
284 #define IOERR_C1220FUNC_1_BREAK3              (26 + ERR_IOERRS)
285 #define IOERR_C1220FUNC_1_BREAK4              (27 + ERR_IOERRS)
286 #define IOERR_C1220FUNC_1_BREAK5              (28 + ERR_IOERRS)
287 #define IOERR_C1220FUNC_1_BREAK6              (29 + ERR_IOERRS)
288 #define IOERR_C1220FUNC_1_BREAK7              (30 + ERR_IOERRS)
289 #define IOERR_C1220FUNC_1_BREAK8              (31 + ERR_IOERRS)
290 #define IOERR_C1220FUNC_1_BREAK9              (32 + ERR_IOERRS)
291 #define IOERR_C1220FUNC_1_BREAK10             (33 + ERR_IOERRS)
292 #define IOERR_C1220FUNC_1_BREAK11             (34 + ERR_IOERRS)
293 #define IOERR_C1220FUNC_1_BREAK12             (35 + ERR_IOERRS)
294 #define IOERR_C1220FUNC_1_BREAK13             (36 + ERR_IOERRS)
295 #define IOERR_C1220FUNC_1_BREAK14             (37 + ERR_IOERRS)
296 #define IOERR_C1220FUNC_1_BREAK15             (38 + ERR_IOERRS)
297 #define IOERR_C1220FUNC_1_BREAK16             (39 + ERR_IOERRS)
298 #define IOERR_SPC3DEVINITDP                   (40 + ERR_IOERRS)
299 #define IOERR_SPC3UPDATEOUTPUT                (41 + ERR_IOERRS)
300 #define IOERR_CIF30READDIAG                   (42 + ERR_IOERRS)
301 #define IOERR_CIF30COMMNOTSTARTED             (43 + ERR_IOERRS)
302 #define IOERR_CIF30SLAVEPARASIZE              (44 + ERR_IOERRS)
303 #define IOERR_CIF30NOPARAS                    (45 + ERR_IOERRS)
304 #define IOERR_CIF30SLAVEERROR                 (46 + ERR_IOERRS)
305 #define IOERR_CIF30WATCHDOGEXPIRED            (47 + ERR_IOERRS)
306 #define IOERR_UNKNOWNDEVICECMD                (48 + ERR_IOERRS)
307 #define IOERR_CIF40MESSAGEHANDLING            (49 + ERR_IOERRS)
308 #define IOERR_CIF40PARAERROR                  (50 + ERR_IOERRS)
309 #define IOERR_CIF40WATCHDOGEXPIRED            (51 + ERR_IOERRS)
310 #define IOERR_CIF40FLAGERROR                  (52 + ERR_IOERRS)
311 #define IOERR_CIF40COMMNOTSTARTED             (53 + ERR_IOERRS)
312 #define IOERR_CIF40READDIAG                   (54 + ERR_IOERRS)
313 #define IOERR_CIF40SLAVEERROR                 (55 + ERR_IOERRS)
314 #define IOERR_CIF40GLOBALERROR                (56 + ERR_IOERRS)
315 #define IOERR_CIF40CONFIGLIST                 (57 + ERR_IOERRS)
316 #define IOERR_CP5412A2SLAVEPARASIZE           (58 + ERR_IOERRS)
317 #define IOERR_CP5412A2NOPARAS                 (59 + ERR_IOERRS)
318 #define IOERR_CP5412A2SLAVEERROR              (60 + ERR_IOERRS)
319 #define IOERR_CP5412A2FATAL                   (61 + ERR_IOERRS)
320 #define IOERR_CP5412A2MAILBOXUSED             (62 + ERR_IOERRS)
321 #define IOERR_BEGINCONFIGWHILETICKER          (63 + ERR_IOERRS)
322 #define IOERR_UNEXPECTEDBOXCOUNT              (64 + ERR_IOERRS)
323 #define IOERR_C1200CHECKADDR                  (65 + ERR_IOERRS)
324 #define IOERR_C1200INTENSITYTEST              (66 + ERR_IOERRS)
325 #define IOERR_NOIMAGE                         (67 + ERR_IOERRS)
326 #define IOERR_INVALIDIMAGEOFFSSIZE            (68 + ERR_IOERRS)
327 #define IOERR_FORCESCOUNTEXCEEDEDMAXIMUM      (69 + ERR_IOERRS)
328 #define IOERR_SERCOSLIFECOUNTERERR            (70 + ERR_IOERRS)
329 #define IOERR_C1220NOTFOUND                   (71 + ERR_IOERRS)
330 #define IOERR_AMSDEVICENOAMSINTF              (72 + ERR_IOERRS)
331 #define IOERR_AMSDEVICEAMSCMDIDNOTSUPP        (73 + ERR_IOERRS)
332 #define IOERR_AMSDEVICEAMSSERVICERUNNING      (74 + ERR_IOERRS)
333 #define IOERR_PLCINTERFACE_BUSY               (75 + ERR_IOERRS)
334 #define IOERR_PLCINTERFACE_FAULT              (76 + ERR_IOERRS)
335 #define IOERR_PLCINTERFACE_TIMEOUT            (77 + ERR_IOERRS)
336 #define IOERR_PLCINTERFACE_RESETTIMEOUT       (78 + ERR_IOERRS)
337 #define IOERR_PLCINTERFACE_NODATAEXCH         (79 + ERR_IOERRS)
338 #define IOERR_PLCINTERFACE_RESET              (80 + ERR_IOERRS)
339 #define IOERR_CP5412A2INVALIDADDR             (81 + ERR_IOERRS)
340 #define IOERR_CP5412A2INVALIDPORT             (82 + ERR_IOERRS)
341 #define IOERR_AMSDEVICEBADBOXNO               (83 + ERR_IOERRS)
342 #define IOERR_AMSDEVICEBADTYPE                (84 + ERR_IOERRS)
343 #define IOERR_AMSDEVICEILLEGALADDRESS         (85 + ERR_IOERRS)
344 #define IOERR_CP5412A2INVALIDBOX              (86 + ERR_IOERRS)
345 #define IOERR_AMSDEVICEFIFOOVERFLOW           (87 + ERR_IOERRS)
346 #define IOERR_AMSDEVICEAMSSEQUENCEERROR       (88 + ERR_IOERRS)
347 #define IOERR_CP5412A2DPV1SYNTAXERROR         (89 + ERR_IOERRS)
348 #define IOERR_CP5412A2DEVICENOTRUNNING        (90 + ERR_IOERRS)
349 #define IOERR_AMSDEVICENOTRUNNING             (91 + ERR_IOERRS)
350 #define IOERR_AMSDEVICEBOXNOTDEFINED          (92 + ERR_IOERRS)
351 #define IOERR_CP5412A2BADSERVICEPARA          (93 + ERR_IOERRS)
352 #define IOERR_CP5412A2FIFOOVERFLOW            (94 + ERR_IOERRS)
353 #define IOERR_COMPORTOPENFAILED               (95 + ERR_IOERRS)
354 #define IOERR_CIF30BADMESSAGERESPONSE         (96 + ERR_IOERRS)
355 #define IOERR_CIF30DELETEDATABASE             (97 + ERR_IOERRS)
356 #define IOERR_CIF30STARTSEQFAILED             (98 + ERR_IOERRS)
357 #define IOERR_CIF30DOWNLOADFAILED             (99 + ERR_IOERRS)
358 #define IOERR_CIF30ENDSEQFAILED               (100 + ERR_IOERRS)
359 #define IOERR_CIF30BUSLOADFAILED              (101 + ERR_IOERRS)
360 #define IOERR_PLCINTERFACE_RESETREQ           (102 + ERR_IOERRS)
361 #define IOERR_CP5412A2INVALIDCYCLETICKS       (103 + ERR_IOERRS)
362 #define IOERR_CP5412A2DPBUSFAULT              (104 + ERR_IOERRS)
363 #define IOERR_INVALIDTERMCONFIG               (105 + ERR_IOERRS)
364 #define IOERR_SERCANSBREAK                    (106 + ERR_IOERRS)
365 #define IOERR_SERCANSPHASE0                   (107 + ERR_IOERRS)
366 #define IOERR_SERCANSPHASE1                   (108 + ERR_IOERRS)
367 #define IOERR_SERCANSPHASE2                   (109 + ERR_IOERRS)
368 #define IOERR_SERCANSPHASE3                   (110 + ERR_IOERRS)
369 #define IOERR_SERCANSPHASE4                   (111 + ERR_IOERRS)
370 #define IOERR_SERCANSNCSERVICECHNFAILED       (112 + ERR_IOERRS)
371 #define IOERR_RESOURCECONFICT                 (113 + ERR_IOERRS)
372 #define IOERR_C1220INITSTRINGCOMM             (114 + ERR_IOERRS)
373 #define IOERR_C1220REGSTRINGSLAVE             (115 + ERR_IOERRS)
374 #define IOERR_C1220STRREGFAULT                (116 + ERR_IOERRS)
375 #define IOERR_IOSTATEBUSY                     (117 + ERR_IOERRS)
376 #define IOERR_IBSSCITWATCHDOGEXPIRED          (118 + ERR_IOERRS)
377 #define IOERR_IBSSCITSYNCMAILBOXERROR         (119 + ERR_IOERRS)
378 #define IOERR_IBSSCITCONFIRMDIAGERROR         (120 + ERR_IOERRS)
379 #define IOERR_IBSSCITCREATECFGERROR           (121 + ERR_IOERRS)
380 #define IOERR_IBSSCITCOMPLETEREADCFGERROR     (122 + ERR_IOERRS)
381 #define IOERR_IBSSCITSTARTDATATRANSFERERROR   (123 + ERR_IOERRS)
382 #define IOERR_IBSSCITSETFAULTINDICATION       (124 + ERR_IOERRS)
383 #define IOERR_IBSSCITSETDEVICESTATEINDICATION (125 + ERR_IOERRS)
384 #define IOERR_IBSSCITSETBUSERRORINDICATION    (126 + ERR_IOERRS)
385 #define IOERR_IBSSCITSTOPDATATRANSFERERROR    (127 + ERR_IOERRS)
386 #define IOERR_IBSSCITSETVALUEINDICATION       (128 + ERR_IOERRS)
387 #define IOERR_IBSSCITINITIATEREQ              (129 + ERR_IOERRS)
388 #define IOERR_IBSSCITACTIVATECFGERROR         (130 + ERR_IOERRS)
389 #define IOERR_IBSSCITCOMPACTLOADPDRLERROR     (131 + ERR_IOERRS)
390 #define IOERR_IBSSCITCONTROLPARAMERROR        (132 + ERR_IOERRS)
391 #define IOERR_IBSSCITDEACTIVATECFGERROR       (133 + ERR_IOERRS)
392 #define IOERR_IBSSCITINVALIDPORT              (134 + ERR_IOERRS)
393 #define IOERR_C1220FUNC_7_ADDRESSTEST         (135 + ERR_IOERRS)
394 #define IOERR_FCXXXXMAILBOXUSED               (136 + ERR_IOERRS)
395 #define IOERR_FCXXXXDPRAMTOOSMALL             (137 + ERR_IOERRS)
396 #define IOERR_COMUPS_PORTINUSE                (138 + ERR_IOERRS)
397 #define IOERR_COMUPS_NOUPSORNOPOWER           (139 + ERR_IOERRS)
398 #define IOERR_COMUPS_LOWBATTERY               (140 + ERR_IOERRS)
399 #define IOERR_UPS_ALREADY_EXISTS              (141 + ERR_IOERRS)
400 #define IOERR_FCXXXXSTARTUPFAILED             (142 + ERR_IOERRS)
401 #define IOERR_C1220GETSTRINGCOMMTXSTATEFAILED (143 + ERR_IOERRS)
402 #define IOERR_C1220SENDSTRINGTOSLAVEFAILED    (144 + ERR_IOERRS)
403 #define IOERR_CP5613FIRMWARELOADFAILED        (145 + ERR_IOERRS)
404 #define IOERR_CP5613DPOPENFAILED              (146 + ERR_IOERRS)
405 #define IOERR_CP5613FATALERROR                (147 + ERR_IOERRS)
406 #define IOERR_CP5613DPUSEROPENFAILED          (148 + ERR_IOERRS)
407 #define IOERR_CP5613DPSETMODESTOPFAILED       (149 + ERR_IOERRS)
408 #define IOERR_CP5613DPSETMODECLEARFAILED      (150 + ERR_IOERRS)
409 #define IOERR_CP5613DPSETMODEOPERATEFAILED    (151 + ERR_IOERRS)
410 #define IOERR_CP5613NODATAAVAILABLE           (152 + ERR_IOERRS)
411 #define IOERR_CP5613DPSERVICEFAILED           (153 + ERR_IOERRS)
412 #define IOERR_CP5613DPSETMODEOFFLINEFAILED    (154 + ERR_IOERRS)
413 #define IOERR_CP5613DPUSERCLOSEFAILED         (155 + ERR_IOERRS)
414 #define IOERR_CP5613DPCLOSEFAILED             (156 + ERR_IOERRS)
415 #define IOERR_CP5613OTHERSERVICERETURNED      (157 + ERR_IOERRS)
416 #define IOERR_CP5613DPOKASYNC                 (158 + ERR_IOERRS)
417 #define IOERR_CP5613DPERROREVENT              (159 + ERR_IOERRS)
418 #define IOERR_CP5613DPERROREVENTNET           (160 + ERR_IOERRS)
419 #define IOERR_CP5613DPERRORREQPAR             (161 + ERR_IOERRS)
420 #define IOERR_CP5613DPERRORCI                 (162 + ERR_IOERRS)
421 #define IOERR_CP5613DPERRORRES                (163 + ERR_IOERRS)
422 #define IOERR_CP5613DPERRORUSRABORT           (164 + ERR_IOERRS)
423 #define IOERR_PKWSYNTAXERROR                  (165 + ERR_IOERRS)
424 #define IOERR_CP5412A2CDLCFGFAULT             (166 + ERR_IOERRS)
425 #define IOERR_IBSSCITINITLOADCFGERROR         (168 + ERR_IOERRS)
426 #define IOERR_IBSSCITLOADCFGERROR             (169 + ERR_IOERRS)
427 #define IOERR_IBSSCITTERMLOADCFGERROR         (170 + ERR_IOERRS)
428 #define IOERR_IBSSCITINITLOADPDRLERROR        (171 + ERR_IOERRS)
429 #define IOERR_IBSSCITLOADPDRLERROR            (172 + ERR_IOERRS)
430 #define IOERR_IBSSCITTERMLOADPDRLERROR        (173 + ERR_IOERRS)
431 #define IOERR_IBSSCITDELETEOBJECTERROR        (174 + ERR_IOERRS)
432 #define IOERR_IBSSCITCONTROLACTIVECFGGERROR   (175 + ERR_IOERRS)
433 #define IOERR_IBSSCITINITLOADPDDLERROR        (176 + ERR_IOERRS)
434 #define IOERR_IBSSCITLOADPDDLERROR            (177 + ERR_IOERRS)
435 #define IOERR_IBSSCITTERMLOADPDDLERROR        (178 + ERR_IOERRS)
436 #define IOERR_NOMOREMAPSINIMAGE               (179 + ERR_IOERRS)
437 #define IOERR_IBSSCITSETSLAVEINFOERROR        (180 + ERR_IOERRS)
438 #define IOERR_CIF40NOTREADY                   (190 + ERR_IOERRS)
439 #define IOERR_C1220SETAMSNETIDFAILED          (191 + ERR_IOERRS)
440 #define IOERR_AMSDEVICEIORESETACTIVE          (192 + ERR_IOERRS)
441 #define IOERR_C1220INITPROGRAMMABLECDL        (193 + ERR_IOERRS)
442 #define IOERR_FCXXXXINVALIDBOXNODOWNLOADED    (194 + ERR_IOERRS)
443
444
445 #define IOERR_CP5412A2_RESET         (4  + ERR_CP5412A2)
446 #define IOERR_CP5412A2_LOADBUSPARA   (5  + ERR_CP5412A2)
447 #define IOERR_CP5412A2_LOADSLAVE     (6  + ERR_CP5412A2)
448 #define IOERR_CP5412A2_LOADPRMDATA   (7  + ERR_CP5412A2)
449 #define IOERR_CP5412A2_LOADCFGDATA   (8  + ERR_CP5412A2)
450 #define IOERR_CP5412A2_LOADSLAVECDL  (9  + ERR_CP5412A2)
451 #define IOERR_CP5412A2_ACTIVATESLAVE (10 + ERR_CP5412A2)
452 #define IOERR_CP5412A2_ADDSLAVE      (11 + ERR_CP5412A2)
453 #define IOERR_CP5412A2_DELETESLAVE   (12 + ERR_CP5412A2)
454 #define IOERR_CP5412A2_STARTDATAEXCH (13 + ERR_CP5412A2)
455 #define IOERR_CP5412A2_STOPDATAEXCH  (14 + ERR_CP5412A2)
456 #define IOERR_CP5412A2_DEBUGDPM      (15 + ERR_CP5412A2)
457
458
459 /* FC Box - stamndadisiert */
460
461 #define FCERR_FMNOERROR             0
462 #define FCERR_FMDEACTIVATED         1
463 #define FCERR_FMNOANSWER            2
464 #define FCERR_FMMASTERLOCK          3
465 #define FCERR_FMINVALIDRESPONSE     4
466 #define FCERR_FMPRMFAULT            5
467 #define FCERR_FMFEATURENOTSUPPORTED 6
468 #define FCERR_FMCFGFAULT            7
469 #define FCERR_FMSTATIONNOTREADY     8
470 #define FCERR_FMSTATDIAG            9
471 #define FCERR_FMDIAGOVERFLOW        10
472 #define FCERR_FMPHYSICALFAULT       11
473 #define FCERR_FMDATATRANSFERLEFT    12
474 #define FCERR_FMSYNIFAULT           13
475 #define FCERR_FMTELEGRAMFAULT       14
476 #define FCERR_FMNORESSOURCES        15
477 #define FCERR_FMSERVICENOTACTIVATED 16
478 #define FCERR_FMUNEXPECTEDTELEGRAM  17
479 #define FCERR_FMSTATIONREADY        18
480 #define FCERR_FMADSSTARTUP          19
481 #define FCERR_FMINVALIDINDICATION   20
482 #define FCERR_FMSTATIONINFAULT      21
483 #define FCERR_FMINDICATIONMISSED    22
484 #define FCERR_FMWAITFORINDICATIONS  23
485
486 #define FCERR_FMFBUSSPECIFIC_1      40
487 #define FCERR_FMFBUSSPECIFIC_2      41
488 #define FCERR_FMFBUSSPECIFIC_3      42
489 #define FCERR_FMFBUSSPECIFIC_4      43
490 #define FCERR_FMFBUSSPECIFIC_5      44
491 #define FCERR_FMFBUSSPECIFIC_6      45
492 #define FCERR_FMFBUSSPECIFIC_7      46
493 #define FCERR_FMFBUSSPECIFIC_8      47
494 #define FCERR_FMFBUSSPECIFIC_9      48
495
496
497 /* FC520x */
498
499 #define FCERR_FMFC520XHEARTBEATFAULT     40
500 #define FCERR_FMFC520XSHUTDOWNRECEIVED   41
501 #define FCERR_FMFC520XEKEYERROR_VENDOR   42
502 #define FCERR_FMFC520XEKEYERROR_DEVTYPE  43
503 #define FCERR_FMFC520XEKEYERROR_PRODCODE 44
504 #define FCERR_FMFC520XEKEYERROR_REVISION 45
505 #define FCERR_FMFC520XSTARTUPATTR        46
506 #define FCERR_FMFC520XIOLENGTH_PROD      47
507 #define FCERR_FMFC520XIOLENGTH_CONS      48
508
509 #define FCERR_FMFC520XDEVICEOPERATE_RUN   0
510 #define FCERR_FMFC520XDEVICEOPERATE_IDLE  1
511 #define FCERR_FMFC520XDEVICEDUPMAC        2
512 #define FCERR_FMFC520XDEVICESELFTEST      3
513 #define FCERR_FMFC520XDEVICESTANDBY       4
514 #define FCERR_FMFC520XDEVICEMAJORFAULT    5
515 #define FCERR_FMFC520XDEVICEMINORFAULT    6
516 #define FCERR_FMFC520XDEVICEBUSSENSEFAIL  7
517
518 #define FCERR_FMFC520XCANBUSON        0x01
519 #define FCERR_FMFC520XCANBUSOFF       0x02
520 #define FCERR_FMFC520XCANWARNINGLIMIT 0x04
521 #define FCERR_FMFC520XCANOVERRUN      0x08
522
523
524 /* DP-Slave-Errors */
525
526 #define DPSLAVEERROR_NOERROR              (FCERR_FMNOERROR             + ERR_DPSLAVE)
527 #define DPSLAVEERROR_STATIONDEACTIVATED   (FCERR_FMDEACTIVATED         + ERR_DPSLAVE)
528 #define DPSLAVEERROR_STATIONNONEXISTENT   (FCERR_FMNOANSWER            + ERR_DPSLAVE)
529 #define DPSLAVEERROR_MASTERLOCK           (FCERR_FMMASTERLOCK          + ERR_DPSLAVE)
530 #define DPSLAVEERROR_INVALIDSLAVERESPONSE (FCERR_FMINVALIDRESPONSE     + ERR_DPSLAVE)
531 #define DPSLAVEERROR_PRMFAULT             (FCERR_FMPRMFAULT            + ERR_DPSLAVE)
532 #define DPSLAVEERROR_NOTSUPPORTED         (FCERR_FMFEATURENOTSUPPORTED + ERR_DPSLAVE)
533 #define DPSLAVEERROR_CFGFAULT             (FCERR_FMCFGFAULT            + ERR_DPSLAVE)
534 #define DPSLAVEERROR_STATIONNOTREADY      (FCERR_FMSTATIONNOTREADY     + ERR_DPSLAVE)
535 #define DPSLAVEERROR_STATDIAG             (FCERR_FMSTATDIAG            + ERR_DPSLAVE)
536 #define DPSLAVEERROR_DIAGOVERFLOW         (FCERR_FMDIAGOVERFLOW        + ERR_DPSLAVE)
537 #define DPSLAVEERROR_PHYSICALFAULT        (FCERR_FMPHYSICALFAULT       + ERR_DPSLAVE)
538 #define DPSLAVEERROR_TELEGRAMFAULT        (FCERR_FMTELEGRAMFAULT       + ERR_DPSLAVE)
539 #define DPSLAVEERROR_NORESSOURCES         (FCERR_FMNORESSOURCES        + ERR_DPSLAVE)
540 #define DPSLAVEERROR_SERVICENOTACTIVATED  (FCERR_FMSERVICENOTACTIVATED + ERR_DPSLAVE)
541 #define DPSLAVEERROR_UNEXPECTEDTELEGRAM   (FCERR_FMUNEXPECTEDTELEGRAM  + ERR_DPSLAVE)
542 #define DPSLAVEERROR_STATIONREADY         (FCERR_FMSTATIONREADY        + ERR_DPSLAVE)
543 #define DPSLAVEERROR_ADSSTARTUP           (FCERR_FMADSSTARTUP          + ERR_DPSLAVE)
544
545
546 /* CAN-Node-Errors */
547
548 #define CANNODEERROR_NOERROR            (0  + ERR_CANSLAVE)
549 #define CANNODEERROR_STATIONNONEXISTENT (1  + ERR_CANSLAVE)
550 #define CANNODEERROR_PRMFAULT           (4  + ERR_CANSLAVE)
551 #define CANNODEERROR_CFGFAULT           (6  + ERR_CANSLAVE)
552 #define CANNODEERROR_DEACTIVATED        (8  + ERR_CANSLAVE)
553 #define CANNODEERROR_PREOPERATIONAL     (12 + ERR_CANSLAVE)
554 #define CANNODEERROR_NOT_OPERATIONAL    (13 + ERR_CANSLAVE)
555
556
557 /* IBS-Device-Errors */
558
559 #define IBSDEVICEERROR_NOERROR            (0  + ERR_IBSSLAVE)
560 #define IBSDEVICEERROR_STATIONDEACTIVATED (1  + ERR_IBSSLAVE)
561 #define IBSDEVICEERROR_STATIONNONEXISTENT (2  + ERR_IBSSLAVE)
562 #define IBSDEVICEERROR_CFGFAULT           (6  + ERR_IBSSLAVE)
563 #define IBSDEVICEERROR_DIAGOVERFLOW       (10 + ERR_IBSSLAVE)
564 #define IBSDEVICEERROR_PHYSICALFAULT      (11 + ERR_IBSSLAVE)
565
566
567 /* PLC */
568 #define PLCWRN_LOADINGBOOTPRJ    ((0 + ERR_PLCERRS) | AMSERRCODEISWARNING)
569 #define PLCWRN_LOADINGRETAINDATA ((1 + ERR_PLCERRS) | AMSERRCODEISWARNING)
570
571
572 /* NC */
573 #define ERR_NCR0MANERRS (ERR_NCERRS+0x0000)
574 #define ERR_NCCHNERRS   (ERR_NCERRS+0x0100)
575
576
577 /* NC: R0-Manager Error Codes */
578 #define NCERR_INTERNAL            (0x0000 + ERR_NCR0MANERRS)
579 #define NCERR_NOMEMORY            (0x0001 + ERR_NCR0MANERRS)
580
581 #define NCERR_UNKNOWNCHANNELID    (0x0010 + ERR_NCR0MANERRS)
582 #define NCERR_UNKNOWNGROUPID      (0x0011 + ERR_NCR0MANERRS)
583 #define NCERR_UNKNOWNAXISID       (0x0012 + ERR_NCR0MANERRS)
584 #define NCERR_UNKNOWNENCODERID    (0x0013 + ERR_NCR0MANERRS)
585 #define NCERR_UNKNOWNCONTROLLERID (0x0014 + ERR_NCR0MANERRS)
586 #define NCERR_UNKNOWNDRIVEID      (0x0015 + ERR_NCR0MANERRS)
587 #define NCERR_UNKNOWNTABULARID    (0x0016 + ERR_NCR0MANERRS)
588
589 #define NCERR_UNKNOWNPLCTONCADDR  (0x0020 + ERR_NCR0MANERRS)
590 #define NCERR_UNKNOWNNCTOPLCADDR  (0x0021 + ERR_NCR0MANERRS)
591 #define NCERR_UNKNOWNENCINADDR    (0x0022 + ERR_NCR0MANERRS)
592 #define NCERR_UNKNOWNENCOUTADDR   (0x0023 + ERR_NCR0MANERRS)
593 #define NCERR_UNKNOWNDRIVEINADDR  (0x0024 + ERR_NCR0MANERRS)
594 #define NCERR_UNKNOWNDRIVEOUTADDR (0x0025 + ERR_NCR0MANERRS)
595
596 #define NCERR_UNKNOWNDSLAVETYPE   (0x0030 + ERR_NCR0MANERRS)
597 #define NCERR_UNKNOWNAXISTYPE     (0x0031 + ERR_NCR0MANERRS)
598 #define NCERR_UNKNOWNCHNTYPE      (0x0032 + ERR_NCR0MANERRS)
599
600 #define NCERR_AXISINCOMPATIBLE    (0x0040 + ERR_NCR0MANERRS)
601
602 #define NCERR_CHANNELINCOMPLETE   (0x0050 + ERR_NCR0MANERRS)
603 #define NCERR_GROUPINCOMPLETE     (0x0051 + ERR_NCR0MANERRS)
604 #define NCERR_AXISINCOMPLETE      (0x0052 + ERR_NCR0MANERRS)
605
606 #define NCERR_CHANNELEXISTS       (0x0060 + ERR_NCR0MANERRS)
607 #define NCERR_GROUPEXISTS         (0x0061 + ERR_NCR0MANERRS)
608 #define NCERR_AXISEXISTS          (0x0062 + ERR_NCR0MANERRS)
609 #define NCERR_TABULAREXISTS       (0x0063 + ERR_NCR0MANERRS)
610
611 #define NCERR_WRONGCHANNELINDEX   (0x0070 + ERR_NCR0MANERRS)
612 #define NCERR_WRONGGROUPINDEX     (0x0071 + ERR_NCR0MANERRS)
613
614
615 /* Channel Error Codes */
616 #define NCCHNERR_GROUPINDEX        (0x0001 + ERR_NCCHNERRS)
617 #define NCCHNERR_ADDR_GROUP        (0x0002 + ERR_NCCHNERRS)
618 #define NCCHNERR_NO_PLCINTERFACE   (0x0003 + ERR_NCCHNERRS)
619 #define NCCHNERR_ILLEGALMFUNCNR    (0x0004 + ERR_NCCHNERRS)
620 #define NCCHNERR_NOMEMORY          (0x0005 + ERR_NCCHNERRS)
621 #define NCCHNERR_ISBUSY            (0x0006 + ERR_NCCHNERRS)
622 #define NCCHNERR_NOTSUPPORTED      (0x0007 + ERR_NCCHNERRS)
623 #define NCCHNERR_ILLEGALSETTING    (0x0008 + ERR_NCCHNERRS)
624
625 #define NCCHNERR_NOFILE            (0x0010 + ERR_NCCHNERRS)
626 #define NCCHNERR_ITPSYNTAXLT       (0x0011 + ERR_NCCHNERRS)
627 #define NCCHNERR_ITPSYNTAXRT       (0x0012 + ERR_NCCHNERRS)
628 #define NCCHNERR_SUBNOTFOUND       (0x0013 + ERR_NCCHNERRS)
629 #define NCCHNERR_LOADBUFFERFULL    (0x0014 + ERR_NCCHNERRS)
630 #define NCCHNERR_INVALIDIDENTIFIER (0x0015 + ERR_NCCHNERRS)
631 #define NCCHNERR_UNKNOWNIDENTIFIER (0x0016 + ERR_NCCHNERRS)
632 #define NCCHNERR_SUBINCOMPLETE     (0x0017 + ERR_NCCHNERRS)
633
634 #define NCCHNERR_ZERODIVIDE        (0x0020 + ERR_NCCHNERRS)
635 #define NCCHNERR_BADCIRCLE         (0x0021 + ERR_NCCHNERRS)
636 #define NCCHNERR_INVALIDOPERATION  (0x0022 + ERR_NCCHNERRS)
637
638 #define NCCHNERR_CALLSTACKOVR      (0x0030 + ERR_NCCHNERRS)
639 #define NCCHNERR_CALLSTACKUDR      (0x0031 + ERR_NCCHNERRS)
640 #define NCCHNERR_CALCSTACKOVR      (0x0032 + ERR_NCCHNERRS)
641 #define NCCHNERR_CALCSTACKUDR      (0x0033 + ERR_NCCHNERRS)
642
643 #define NCCHNERR_REGINDEX          (0x0040 + ERR_NCCHNERRS)
644 #define NCCHNERR_GFUNCINDEX        (0x0041 + ERR_NCCHNERRS)
645 #define NCCHNERR_MFUNCINDEX        (0x0042 + ERR_NCCHNERRS)
646 #define NCCHNERR_EXTENDEDADDR      (0x0043 + ERR_NCCHNERRS)
647 #define NCCHNERR_INTERNALINDEXH    (0x0044 + ERR_NCCHNERRS)
648 #define NCCHNERR_MDBACCESSINDEX    (0x0045 + ERR_NCCHNERRS)
649
650 #define NCTRAFOERR_CANNOTCHANGE    (0x0050 + ERR_NCCHNERRS)
651 #define NCTRAFOERR_CANNOTCORRECT   (0x0051 + ERR_NCCHNERRS)
652 #define NCTRAFOERR_PLANE           (0x0052 + ERR_NCCHNERRS)
653 #define NCTRAFOERR_DPARAMINVALID   (0x0053 + ERR_NCCHNERRS)
654 #define NCTRAFOERR_TOOLRADIUSINV   (0x0054 + ERR_NCCHNERRS)
655 #define NCTRAFOERR_CHANGETOOLRAD   (0x0055 + ERR_NCCHNERRS)
656 #define NCTRAFOERR_CDOVERFLOW      (0x0056 + ERR_NCCHNERRS)
657 #define NCTRAFOERR_CDON            (0x0057 + ERR_NCCHNERRS)
658 #define NCTRAFOERR_CDCHECK         (0x0058 + ERR_NCCHNERRS)
659 #define NCTRAFOERR_CDUNEXPECTED    (0x0059 + ERR_NCCHNERRS)
660 #define NCTRAFOERR_CDNEGRADIUS     (0x005A + ERR_NCCHNERRS)
661 #define NCTRAFOERR_CDOCCURED       (0x005B + ERR_NCCHNERRS)
662 #define NCTRAFOERR_COOKEDTBLFULL   (0x005C + ERR_NCCHNERRS)
663 #define NCTRAFOERR_TFTBLFULL       (0x005D + ERR_NCCHNERRS)
664 #define NCTRAFOERR_EXECTFTBLFULL   (0x005E + ERR_NCCHNERRS)
665 #define NCTRAFOERR_EXECTFT         (0x005F + ERR_NCCHNERRS)
666
667 #define NCBACKUPERR_WRITEDATA      (0x0060 + ERR_NCCHNERRS)
668 #define NCBACKUPERR_TARGETENTRY    (0x0061 + ERR_NCCHNERRS)
669
670
671 #define MACHINEIDENTRYDONTCARE 0xFF
672 #define AMS_NETIDLEN           23
673
674 typedef struct AmsNetId_
675 {
676    guint8 b[6];
677 } AmsNetId;
678 #define AmsNetId_Len sizeof(AmsNetId)
679
680 typedef struct AmsAddr_
681 {
682    AmsNetId   netId;
683    guint16    port;
684 } AmsAddr;
685
686 typedef union ErrCodeUnion
687 {
688    gint32 errCode;
689    gint32 hRcv;
690 } ErrCodeUnion;
691
692 typedef union tUserUnion
693 {
694    gint32 hUser;
695    struct
696    {
697       guint16 fragmentNo;
698       guint16 packetNo;
699    } a;
700 } UserUnion;
701
702 typedef struct
703 {
704    AmsAddr target;
705    AmsAddr sender;
706    guint16 cmdId;
707    guint16 stateFlags;
708    guint32 cbData;
709
710    ErrCodeUnion anErrCodeUnion;
711    UserUnion aUserUnion;
712 } AmsHead;
713 #define AmsHead_Len sizeof(AmsHead)
714
715
716 /*   State flags */
717
718 #define AMSCMDSF_RESPONSE       0x0001
719 #define AMSCMDSF_NORETURN       0x0002
720 #define AMSCMDSF_ADSCMD         0x0004
721 #define AMSCMDSF_SYSCMD         0x0008
722 #define AMSCMDSF_HIGHPRIO       0x0010
723 #define AMSCMDSF_TIMESTAMPADDED 0x0020
724 #define AMSCMDSF_UDP            0x0040
725 #define AMSCMDSF_INITCMD        0x0080
726 #define AMSCMDSF_BROADCAST      0x8000
727
728
729 /*   AmsCmd */
730
731 typedef struct
732 {
733    AmsHead head;
734 } AmsCmd, *PAmsCmd;
735
736
737 /* ADS */
738
739 #define ADS_FIXEDNAMESIZE 16
740
741
742 /* ADS Service Ids */
743 #define ADSSRVID_INVALID        0x00
744 #define ADSSRVID_READDEVICEINFO 0x01
745 #define ADSSRVID_READ           0x02
746 #define ADSSRVID_WRITE          0x03
747 #define ADSSRVID_READSTATE      0x04
748 #define ADSSRVID_WRITECTRL      0x05
749 #define ADSSRVID_ADDDEVICENOTE  0x06
750 #define ADSSRVID_DELDEVICENOTE  0x07
751 #define ADSSRVID_DEVICENOTE     0x08
752 #define ADSSRVID_READWRITE      0x09
753
754 /* ADS reserved index groups */
755 #define ADSIGRP_SYMTAB              0xF000
756 #define ADSIGRP_SYMNAME             0xF001
757 #define ADSIGRP_SYMVAL              0xF002
758
759 #define ADSIGRP_SYM_HNDBYNAME       0xF003
760 #define ADSIGRP_SYM_VALBYNAME       0xF004
761 #define ADSIGRP_SYM_VALBYHND        0xF005
762 #define ADSIGRP_SYM_RELEASEHND      0xF006
763 #define ADSIGRP_SYM_INFOBYNAME      0xF007
764 #define ADSIGRP_SYM_VERSION         0xF008
765 #define ADSIGRP_SYM_INFOBYNAMEEX    0xF009
766
767 #define ADSIGRP_SYM_DOWNLOAD        0xF00A
768 #define ADSIGRP_SYM_UPLOAD          0xF00B
769 #define ADSIGRP_SYM_UPLOADINFO      0xF00C
770 #define ADSIGRP_SYM_DOWNLOAD2       0xF00D
771 #define ADSIGRP_SYM_DT_UPLOAD       0xF00E
772 #define ADSIGRP_SYM_UPLOADINFO2     0xF00F
773
774 #define ADSIGRP_SYMNOTE             0xF010
775
776 #define ADSIGRP_SYM_DT_INFOBYNAMEEX 0xF011
777 #define ADSIGRP_SYM_ADDRBYHND       0xF012
778
779
780 #define ADSIGRP_IOIMAGE_RWIB        0xF020
781 #define ADSIGRP_IOIMAGE_RWIX        0xF021
782 #define ADSIGRP_IOIMAGE_RISIZE      0xF025
783
784 #define ADSIGRP_IOIMAGE_RWOB        0xF030
785 #define ADSIGRP_IOIMAGE_RWOX        0xF031
786 #define ADSIGRP_IOIMAGE_ROSIZE      0xF035
787 #define ADSIGRP_IOIMAGE_CLEARI      0xF040
788 #define ADSIGRP_IOIMAGE_CLEARO      0xF050
789
790 #define ADSIGRP_IOIMAGE_RWIOB       0xF060
791
792 #define ADSIGRP_IOIMAGE_CREATE      0xF068
793
794 #define ADSIGRP_SUMUP_READ          0xF080
795
796 #define ADSIGRP_SUMUP_WRITE         0xF081
797 #define ADS_SUMUP_IGRP(p, i)        (((guint32*)p)[(i)*3+0])
798 #define ADS_SUMUP_IOFFS(p, i)       (((guint32*)p)[(i)*3+1])
799 #define ADS_SUMUP_LENGTH(p, i)      (((guint32*)p)[(i)*3+2])
800
801 #define ADSIGRP_DEVICE_DATA 0xF100
802    #define ADSIOFFS_DEVDATA_ADSSTATE        0x0000
803    #define ADSIOFFS_DEVDATA_DEVSTATE        0x0002
804    #define ADSIOFFS_DEVDATA_CONFIGID        0x0004
805    #define ADSIOFFS_DEVDATA_ADSVERSIONCHECK 0x0005
806
807 #define ADSIGRP_TASK_DATA 0xF200
808 /* ADSIGRP_TASK_DATA   reserved until      0xF2FF*/
809
810 #define ADSIGRP_CANOPEN_BEGIN          0xF300
811 #define ADSIGRP_CANOPEN_SDO            0xF302
812 #define ADSIGRP_CANOPEN_SDO_INFO_LIST  0xF3FC
813 #define ADSIGRP_CANOPEN_SDO_INFO_OBJ   0xF3FD
814 #define ADSIGRP_CANOPEN_SDO_INFO_ENTRY 0xF3FE
815 #define ADSIGRP_CANOPEN_END            0xF3FF
816
817 #define ADSIGRP_ECAT_FOE_BEGIN         0xF400
818 #define ADSIGRP_ECAT_FOE_FOPENREAD     0xF401
819 #define ADSIGRP_ECAT_FOE_FOPENWRITE    0xF402
820 #define ADSIGRP_ECAT_FOE_FCLOSE        0xF403
821 #define ADSIGRP_ECAT_FOE_FREAD         0xF404
822 #define ADSIGRP_ECAT_FOE_FWRITE        0xF405
823 #define ADSIGRP_ECAT_FOE_PROGRESSINFO  0xF406
824 #define ADSIGRP_ECAT_FOE_END           0xF41F
825
826 #define ADSIGRP_ECAT_SOE 0xF420
827    #define ADSIOFFS_ECAT_SOE_ELEMENT_MASK 0x00FF0000
828    #define ADSIOFFS_ECAT_SOE_DATASTATE    0x00010000
829    #define ADSIOFFS_ECAT_SOE_NAME         0x00020000
830    #define ADSIOFFS_ECAT_SOE_ATTRIBUTE    0x00040000
831    #define ADSIOFFS_ECAT_SOE_UNIT         0x00080000
832    #define ADSIOFFS_ECAT_SOE_MIN          0x00100000
833    #define ADSIOFFS_ECAT_SOE_MAX          0x00200000
834    #define ADSIOFFS_ECAT_SOE_VALUE        0x00400000
835    #define ADSIOFFS_ECAT_SOE_DEFAULT      0x00800000
836    #define ADSIOFFS_ECAT_SOE_DRIVENO_MASK 0x07000000
837    #define ADSIOFFS_ECAT_SOE_COMMAND      0x08000000
838
839 #define ADSIGRP_ECAT_VOE 0xF430
840
841
842 typedef enum nAdsState
843 {
844    ADSSTATE_INVALID      =0,
845    ADSSTATE_IDLE         =1,
846    ADSSTATE_RESET        =2,
847    ADSSTATE_INIT         =3,
848    ADSSTATE_START        =4,
849    ADSSTATE_RUN          =5,
850    ADSSTATE_STOP         =6,
851    ADSSTATE_SAVECFG      =7,
852    ADSSTATE_LOADCFG      =8,
853    ADSSTATE_POWERFAILURE =9,
854    ADSSTATE_POWERGOOD    =10,
855    ADSSTATE_ERROR        =11,
856    ADSSTATE_SHUTDOWN     =12,
857    ADSSTATE_SUSPEND      =13,
858    ADSSTATE_RESUME       =14,
859    ADSSTATE_CONFIG       =15,
860    ADSSTATE_RECONFIG     =16,
861    ADSSTATE_MAXSTATES
862 } ADSSTATE;
863
864 typedef enum nAdsTransMode
865 {
866    ADSTRANS_NOTRANS     =0,
867    ADSTRANS_CLIENTCYCLE =1,
868    ADSTRANS_CLIENTONCHA =2,
869    ADSTRANS_SERVERCYCLE =3,
870    ADSTRANS_SERVERONCHA =4,
871    ADSTRANS_CLIENT1REQ  =10,
872    ADSTRANS_MAXMODES
873 }ADSTRANSMODE;
874
875
876 /* ADS error codes */
877 #define ADSERR_NOERR                     0x00
878
879 #define ADSERR_DEVICE_ERROR                (0x700)
880 #define ADSERR_DEVICE_SRVNOTSUPP           (0x701)
881 #define ADSERR_DEVICE_INVALIDGRP           (0x702)
882 #define ADSERR_DEVICE_INVALIDOFFSET        (0x703)
883 #define ADSERR_DEVICE_INVALIDACCESS        (0x704)
884 #define ADSERR_DEVICE_INVALIDSIZE          (0x705)
885 #define ADSERR_DEVICE_INVALIDDATA          (0x706)
886 #define ADSERR_DEVICE_NOTREADY             (0x707)
887 #define ADSERR_DEVICE_BUSY                 (0x708)
888 #define ADSERR_DEVICE_INVALIDCONTEXT       (0x709)
889 #define ADSERR_DEVICE_NOMEMORY             (0x70A)
890 #define ADSERR_DEVICE_INVALIDPARM          (0x70B)
891 #define ADSERR_DEVICE_NOTFOUND             (0x70C)
892 #define ADSERR_DEVICE_SYNTAX               (0x70D)
893 #define ADSERR_DEVICE_INCOMPATIBLE         (0x70E)
894 #define ADSERR_DEVICE_EXISTS               (0x70F)
895 #define ADSERR_DEVICE_SYMBOLNOTFOUND       (0x710)
896 #define ADSERR_DEVICE_SYMBOLVERSIONINVALID (0x711)
897 #define ADSERR_DEVICE_INVALIDSTATE         (0x712)
898 #define ADSERR_DEVICE_TRANSMODENOTSUPP     (0x713)
899 #define ADSERR_DEVICE_NOTIFYHNDINVALID     (0x714)
900 #define ADSERR_DEVICE_CLIENTUNKNOWN        (0x715)
901 #define ADSERR_DEVICE_NOMOREHDLS           (0x716)
902 #define ADSERR_DEVICE_INVALIDWATCHSIZE     (0x717)
903 #define ADSERR_DEVICE_NOTINIT              (0x718)
904 #define ADSERR_DEVICE_TIMEOUT              (0x719)
905 #define ADSERR_DEVICE_NOINTERFACE          (0x71A)
906 #define ADSERR_DEVICE_INVALIDINTERFACE     (0x71B)
907 #define ADSERR_DEVICE_INVALIDCLSID         (0x71C)
908 #define ADSERR_DEVICE_INVALIDOBJID         (0x71D)
909 #define ADSERR_DEVICE_PENDING              (0x71E)
910 #define ADSERR_DEVICE_ABORTED              (0x71F)
911 #define ADSERR_DEVICE_WARNING              (0x720)
912 #define ADSERR_DEVICE_INVALIDARRAYIDX      (0x721)
913 #define ADSERR_DEVICE_SYMBOLNOTACTIVE      (0x722)
914 #define ADSERR_DEVICE_ACCESSDENIED         (0x723)
915
916 #define ADSERR_CLIENT_ERROR          (0x740)
917 #define ADSERR_CLIENT_INVALIDPARM    (0x741)
918 #define ADSERR_CLIENT_LISTEMPTY      (0x742)
919 #define ADSERR_CLIENT_VARUSED        (0x743)
920 #define ADSERR_CLIENT_DUPLINVOKEID   (0x744)
921 #define ADSERR_CLIENT_SYNCTIMEOUT    (0x745)
922 #define ADSERR_CLIENT_W32ERROR       (0x746)
923 #define ADSERR_CLIENT_TIMEOUTINVALID (0x747)
924 #define ADSERR_CLIENT_PORTNOTOPEN    (0x748)
925 #define ADSERR_CLIENT_NOAMSADDR      (0x749)
926 #define ADSERR_CLIENT_SYNCINTERNAL   (0x750)
927 #define ADSERR_CLIENT_ADDHASH        (0x751)
928 #define ADSERR_CLIENT_REMOVEHASH     (0x752)
929 #define ADSERR_CLIENT_NOMORESYM      (0x753)
930 #define ADSERR_CLIENT_SYNCRESINVALID (0x754)
931 #define ADSERR_CLIENT_SYNCPORTLOCKED (0x755)
932
933
934 #define FACILITY_TC_ADS 0x1811
935 #define FACILITY_TC_CNC 0x1821
936 #define FACILITY_TC_IO  0x1831
937
938
939 #define ADS_E_ERROR                (0x98110000L + ADSERR_DEVICE_ERROR)
940 #define ADS_E_SRVNOTSUPP           (0x98110000L + ADSERR_DEVICE_SRVNOTSUPP)
941 #define ADS_E_INVALIDGRP           (0x98110000L + ADSERR_DEVICE_INVALIDGRP)
942 #define ADS_E_INVALIDOFFSET        (0x98110000L + ADSERR_DEVICE_INVALIDOFFSET)
943 #define ADS_E_INVALIDACCESS        (0x98110000L + ADSERR_DEVICE_INVALIDACCESS)
944 #define ADS_E_INVALIDSIZE          (0x98110000L + ADSERR_DEVICE_INVALIDSIZE)
945 #define ADS_E_INVALIDDATA          (0x98110000L + ADSERR_DEVICE_INVALIDDATA)
946 #define ADS_E_NOTREADY             (0x98110000L + ADSERR_DEVICE_NOTREADY)
947 #define ADS_E_BUSY                 (0x98110000L + ADSERR_DEVICE_BUSY)
948 #define ADS_E_INVALIDCONTEXT       (0x98110000L + ADSERR_DEVICE_INVALIDCONTEXT)
949 #define ADS_E_NOMEMORY             (0x98110000L + ADSERR_DEVICE_NOMEMORY)
950 #define ADS_E_INVALIDPARM          (0x98110000L + ADSERR_DEVICE_INVALIDPARM)
951 #define ADS_E_NOTFOUND             (0x98110000L + ADSERR_DEVICE_NOTFOUND)
952 #define ADS_E_SYNTAX               (0x98110000L + ADSERR_DEVICE_SYNTAX)
953 #define ADS_E_INCOMPATIBLE         (0x98110000L + ADSERR_DEVICE_INCOMPATIBLE)
954 #define ADS_E_EXISTS               (0x98110000L + ADSERR_DEVICE_EXISTS)
955 #define ADS_E_SYMBOLNOTFOUND       (0x98110000L + ADSERR_DEVICE_SYMBOLNOTFOUND)
956 #define ADS_E_SYMBOLVERSIONINVALID (0x98110000L + ADSERR_DEVICE_SYMBOLVERSIONINVALID)
957 #define ADS_E_INVALIDSTATE         (0x98110000L + ADSERR_DEVICE_INVALIDSTATE)
958 #define ADS_E_TRANSMODENOTSUPP     (0x98110000L + ADSERR_DEVICE_TRANSMODENOTSUPP)
959 #define ADS_E_NOTIFYHNDINVALID     (0x98110000L + ADSERR_DEVICE_NOTIFYHNDINVALID)
960 #define ADS_E_CLIENTUNKNOWN        (0x98110000L + ADSERR_DEVICE_CLIENTUNKNOWN)
961 #define ADS_E_NOMOREHDLS           (0x98110000L + ADSERR_DEVICE_NOMOREHDLS)
962 #define ADS_E_INVALIDWATCHSIZE     (0x98110000L + ADSERR_DEVICE_INVALIDWATCHSIZE)
963 #define ADS_E_NOTINIT              (0x98110000L + ADSERR_DEVICE_NOTINIT)
964 #define ADS_E_TIMEOUT              (0x98110000L + ADSERR_DEVICE_TIMEOUT)
965 #define ADS_E_NOINTERFACE          (0x98110000L + ADSERR_DEVICE_NOINTERFACE)
966 #define ADS_E_INVALIDINTERFACE     (0x98110000L + ADSERR_DEVICE_INVALIDINTERFACE)
967 #define ADS_E_INVALIDCLSID         (0x98110000L + ADSERR_DEVICE_INVALIDCLSID)
968 #define ADS_E_INVALIDOBJID         (0x98110000L + ADSERR_DEVICE_INVALIDOBJID)
969 #define ADS_E_PENDING              (0x98110000L + ADSERR_DEVICE_PENDING)
970 #define ADS_E_ABORTED              (0x98110000L + ADSERR_DEVICE_ABORTED)
971 #define ADS_E_WARNING              (0x98110000L + ADSERR_DEVICE_WARNING)
972 #define ADS_E_INVALIDARRAYIDX      (0x98110000L + ADSERR_DEVICE_INVALIDARRAYIDX)
973 #define ADS_E_SYMBOLNOTACTIVE      (0x98110000L + ADSERR_DEVICE_SYMBOLNOTACTIVE)
974 #define ADS_E_ACCESSDENIED         (0x98110000L + ADSERR_DEVICE_ACCESSDENIED)
975
976
977 #ifndef ANYSIZE_ARRAY
978    #define ANYSIZE_ARRAY 1
979 #endif
980
981 /* ADS AMS command */
982 /*typedef struct
983 {
984    guint32 hNotification;
985    guint32 cbSampleSize;
986    guint8  data[ANYSIZE_ARRAY];
987 } AdsNotificationSample, *PAdsNotificationSample;*/
988 #define AdsNotificationSample_Min_Len 4
989
990 typedef struct
991 {
992    guint32 invokeId;
993 } TAdsReadDeviceInfoReq;
994
995 #define TAdsReadDeviceInfoReq_Len sizeof(TAdsReadDeviceInfoReq)
996
997 /*typedef struct
998 {
999    guint16 adsState;
1000    guint16 deviceState;
1001    guint32 cbLength;
1002    guint16 firstDataWord;
1003 } TAdsWriteControlReq, TAdsWriteControlInd;*/
1004 #define TAdsWriteControlReq_Len 10
1005
1006 typedef struct
1007 {
1008    guint32 invokeId;
1009 } TAdsReadStateReq;
1010 #define TAdsReadStateReq_Len sizeof(TAdsReadStateReq)
1011
1012 typedef struct
1013 {
1014    guint32 indexGroup;
1015    guint32 indexOffset;
1016    guint32 cbLength;
1017 } TAdsReadReq;
1018 #define TAdsReadReq_Len sizeof(TAdsReadReq)
1019
1020 /*typedef struct
1021 {
1022    guint32 indexGroup;
1023    guint32 indexOffset;
1024    guint32 cbLength;
1025    guint16 firstDataWord;
1026 } TAdsWriteReq;*/
1027 #define TAdsWriteReq_Len 14
1028
1029 /*
1030 typedef struct
1031 {
1032    guint32 indexGroup;
1033    guint32 indexOffset;
1034    guint32 cbReadLength;
1035    guint32 cbWriteLength;
1036    guint16 firstDataWord;
1037 } TAdsReadWriteReq;*/
1038 #define TAdsReadWriteReq_Len 18
1039
1040 typedef struct
1041 {
1042    guint32 cbLength;
1043    guint32 nTransMode;
1044    guint32 nMaxDelay;
1045    guint32 nCycleTime;
1046    guint8  nCmpMax[sizeof(double)];
1047    guint8  nCmpMin[sizeof(double)];
1048 } AdsNotificationAttrib;
1049
1050 typedef struct
1051 {
1052    guint32               indexGroup;
1053    guint32               indexOffset;
1054    AdsNotificationAttrib noteAttrib;
1055 } TAdsAddDeviceNotificationReq; 
1056 #define TAdsAddDeviceNotificationReq_Len sizeof(TAdsAddDeviceNotificationReq)  
1057
1058 typedef struct
1059 {
1060    guint32   hNotification;
1061 }  TAdsDelDeviceNotificationReq;
1062 #define TAdsDelDeviceNotificationReq_Len sizeof(TAdsDelDeviceNotificationReq)
1063
1064 typedef struct
1065 {
1066    guint32 cbLength;
1067    guint32 nStamps;
1068 }  TAdsDeviceNotificationReq;
1069 #define TAdsDeviceNotificationReq_Len sizeof(TAdsDeviceNotificationReq)
1070
1071 typedef struct
1072 {
1073    guint32  result;
1074 } TAdsRes;
1075 #define TAdsRes_Len sizeof(TAdsRes)
1076
1077 typedef struct
1078 {
1079    guint8  version;
1080    guint8  revision;
1081    guint16 build;
1082 } AdsVersion, *PAdsVersion;
1083
1084 typedef struct
1085 {
1086    guint32    result;
1087    AdsVersion version;
1088    char       sName[ADS_FIXEDNAMESIZE];
1089 } TAdsReadDeviceInfoRes;
1090 #define TAdsReadDeviceInfoRes_Len sizeof(TAdsReadDeviceInfoRes)
1091
1092 typedef struct
1093 {
1094    guint32 result;
1095 } TAdsWriteControlRes;
1096 #define TAdsWriteControlRes_Len sizeof(TAdsWriteControlRes)
1097
1098 typedef struct
1099 {
1100    guint32 result;
1101    guint16 adsState;
1102    guint16 deviceState;
1103 } TAdsReadStateRes;
1104 #define TAdsReadStateRes_Len sizeof(TAdsReadStateRes)
1105
1106 typedef struct
1107 {
1108    guint32 result;
1109    guint32 cbLength;
1110    guint16 firstDataWord;
1111 } TAdsReadRes;
1112 #define TAdsReadRes_Len sizeof(TAdsReadRes)
1113
1114 typedef struct
1115 {
1116    guint32 result;
1117    guint32 cbLength;
1118    guint16 firstDataWord;
1119 } TAdsReadWriteRes;
1120 #define TAdsReadWriteRes_Len sizeof(TAdsReadWriteRes)
1121
1122 typedef struct
1123 {
1124    guint32 result;
1125 } TAdsWriteRes;
1126 #define TAdsWriteRes_Len sizeof(TAdsWriteRes)
1127
1128 typedef struct
1129 {
1130    guint32 result;
1131    guint32 handle;
1132 }  TAdsAddDeviceNotificationRes;   
1133 #define TAdsAddDeviceNotificationRes_Len sizeof(TAdsAddDeviceNotificationRes)
1134
1135 typedef struct
1136 {
1137    guint32 result;
1138 }  TAdsDelDeviceNotificationRes;   
1139 #define TAdsDelDeviceNotificationRes_Len sizeof(TAdsDelDeviceNotificationRes)
1140
1141
1142 /* structure for decoding the header -----------------------------------------*/
1143 /*typedef struct
1144 {
1145    guint16 reserved;
1146    guint32 cbLength;
1147 } TcpAdsParserHDR;
1148 typedef TcpAdsParserHDR;*/
1149 #define TcpAdsParserHDR_Len 6
1150
1151
1152 #endif