versadac  1
versadac - Scalable Recorder Firmware
eips_system.h
1 /*
2  * Copyright (c) 2002-2013 by Real Time Automation, Inc.
3  *
4  * This software is copyrighted by and is the sole property of
5  * Real Time Automation, Inc. (RTA). All rights, title, ownership,
6  * or other interests in the software remain the property of RTA.
7  * This software may only be used in accordance with the corresponding
8  * license agreement. Any unauthorized use, duplication, transmission,
9  * distribution, or disclosure of this software is expressly forbidden.
10  *
11  * This Copyright notice MAY NOT be removed or modified without prior
12  * written consent of RTA.
13  *
14  * RTA reserves the right to modify this software without notice.
15  *
16  * Real Time Automation
17  * 150 S. Sunny Slope Road USA 262.439.4999
18  * Suite 130 www.rtaautomation.com
19  * Brookfield, WI 53005 software@rtaautomation.com
20  *
21  *************************************************************************
22  *
23  * Version Date: 18APR2013
24  * Version: 2.33
25  * Conformed To: EtherNet/IP Protocol Conformance Test A-9 (16-NOV-2011)
26  * Module Name: eips_system.h
27  * Author: Jamin D. Wendorf (jwendorf@rtaautomation.com)
28  * Language: Ansi C
29  * Compile Options: N/A
30  * Compile defines: N/A
31  * Libraries: N/A
32  * Link Options: N/A
33  *
34  * Description.
35  * =======================================================================
36  * This file contains EtherNet/IP Server specific definitions.
37  *
38  */
39 
40 #ifndef __EIPS_SYSTEM_H__
41 #define __EIPS_SYSTEM_H__
42 
43 /*#define EUROTHERM_VXWORKS 1 */
44 
45 #define EIPS_UDP_BIDIR 0
46 #define EIPS_UDP_RXONLY 1
47 #define EIPS_UDP_TXONLY 2
48 
49 #define EIP_CIP_PORT 44818
50 #define EIPS_UDPIO_PORT 2222
51 
52 /* NOTE: There are only 5 service codes available to the user, the rest are
53  handled by the standard code. If Set_Attribute_Single is supported, then
54  Get_Attribute_Single MUST be supported. The same is NOT true with
55  Set_Attribute_All and Get_Attribute_All. Each entry in the table can only
56  have one mask value. This makes processing easier. */
57 #define EIPS_SCMASK_GETALL 0x01
58 #define EIPS_SCMASK_SETALL 0x02
59 #define EIPS_SCMASK_GETSNG 0x04
60 #define EIPS_SCMASK_SETSNG 0x08
61 #define EIPS_SCMASK_RESET 0x10
62 
63 /* DeviceNet Data Type */
64 #define EIPS_TYPE_UINT8 0
65 #define EIPS_TYPE_UINT16 1
66 #define EIPS_TYPE_UINT32 2
67 #define EIPS_TYPE_INT8 3
68 #define EIPS_TYPE_INT16 4
69 #define EIPS_TYPE_INT32 5
70 #define EIPS_TYPE_FLOAT 6
71 #define EIPS_TYPE_UNUSED 7
72 
73 #define EIPS_CPF_ADDR_ITEM 0
74 #define EIPS_CPF_DATA_ITEM 1
75 #define EIPS_CPF_OPT_ITEM 2 /* CIP doesn't use these (always 2) */
76 #define EIPS_CPF_SOCKO2T_ITEM 2
77 #define EIPS_CPF_SOCKT2O_ITEM 3
78 #define EIPS_CPF_MAX_ITEM_CNT 4
79 
80 /* List Services Capability Flags (Encap 0x0004)
81  ---------------------------------------------
82  bits 0 - 4 : reserved
83  bit 5 : 1 = CIP over TCP supported, else 0
84  bits 6 - 7 : reserved
85  bit 8 : 1 = Supports CIP Class 0/1 UDP (I/O)
86  bits 9 - 15 : reserved
87 */
88 #define EIP_LIST_SERVICES_CAP_FLAGS 0x0120
89 
90 #define SOCKTYPE_TCP 0
91 #define SOCKTYPE_UDP 1
92 
93 #define EIP_SESSION_STATE_UNUSED 0
94 #define EIP_SESSION_STATE_USED 1
95 
96 /*
97  -------------------------------------------------------------------
98  NORMAL INITIALIZATION (0)
99  -------------------------------------------------------------------
100  Emulate as closely as possible cycling power on the item the Object
101  represents. This value is the default if this parameter is omitted.
102 
103  -------------------------------------------------------------------
104  OUT OF BOX INITIALIZATION (1)
105  -------------------------------------------------------------------
106  Return as closely as possible to the out–of–box configuration, then
107  emulate cycling power as closely as possible.
108 */
109 #define EIPSINIT_NORMAL 0x00
110 #define EIPSINIT_OUTOFBOX 0x01
111 #define EIPSINIT_OUTOFBOX_NOCOMM 0x02
112 #define EIPCINIT_NORMAL EIPSINIT_NORMAL
113 #define EIPCINIT_OUTOFBOX EIPSINIT_OUTOFBOX
114 
115 /* Valid EIP Server States */
116 #define EIPS_STATE_RESETNORMAL 0
117 #define EIPS_STATE_RESETOUTOFBOX 1
118 /* #define EIPS_STATE_RESETOUTOFBOX_NOCOMM 2 */
119 #define EIPS_STATE_RUNNING 255
120 
121 #define EIPS_TIMER_NULL 0xFFFF
122 
123 /* RTA DEFINED MACROS */
124 #define RTA_MIN(a,b) (a<b?a:b)
125 #define RTA_CIP_INST_TO_IX(a) (a>0?(a-1):a)
126 #include "EthernetIP_interface.h"
127 #include "EthernetIP_enums.h"
128 
129 /* --------------------------------------------------------------- */
130 /* EIPS STANDARD INCLUDE FILES */
131 /* --------------------------------------------------------------- */
132 #include "eips_usersys.h"
133 #include "eips_userobj.h"
134 #include "eips_usersock.h"
135 #include "eips_encap.h"
136 #include "eips_cpf.h"
137 #include "eips_struct.h"
138 #include "eips_cnxn.h"
139 #include "eips_proto.h"
140 #include "eips_revision.h"
141 #include "eips_iomsg.h"
142 
143 #ifdef EIPC_CLIENT_USED
144  #include "eipc_client.h"
145 
146  #ifdef EIPC_CCO_CLIENT_USED
147  #include "eipc_cco.h"
148  #endif
149 #endif
150 
151 #if defined (EIPS_CIP_READ_WRITE_DATA_LOGIX) && defined (EIPS_CIP_READ_WRITE_DATA_LOGIX_ADVANCED)
152  #error "Can't support EIPS_CIP_READ_WRITE_DATA_LOGIX and EIPS_CIP_READ_WRITE_DATA_LOGIX_ADVANCED"
153 #endif
154 
155 #if defined (EIPS_CIP_READ_WRITE_DATA_LOGIX) || defined (EIPS_CIP_READ_WRITE_DATA_LOGIX_ADVANCED)
156  #include "eips_tag.h"
157 #endif
158 
159 extern bool eips_is_server_mode (void);
160 extern bool eips_get_mode (void);
161 /* --------------------------------------------------------------- */
162 /* BEGIN: EIP TIMER DEFINITIONS (DON'T DEFINE MORE THAN WE NEED) */
163 /* --------------------------------------------------------------- */
164 
165 //EIPS_USER_MAX_NUM_TIMERS - User defined, default is 0
166 //EIPS_CNXN_MAXTOTALCNXNS - 1 per for Class 3 EM as a server/adapter
167 //EIPS_USER_MAX_NUM_IO_CNXNS - 2 per for Class 1 IO as a server/adapter
168 //EIPC_USERSYS_MAX_NUM_SERVERS - 1 per for general use as a client/scanner
169 //EIPC_USERSYS_MAX_NUM_SERVERS - 1 per for class 3 EM use as a client/scanner
170 #ifdef EUROTHERM_VXWORKS
171 #define EIPC_IO_MAX_NUM_IO_SERVERS 2 //2 per client/scanner for I/O
172 #endif
173 
174 /* conditionally add timers for optional client functionality */
175 #ifdef EIPC_CLIENT_USED
176  #define RTA_MAX_NUM_CLIENT_TIMERS EIPC_USERSYS_MAX_NUM_SERVERS
177 #else
178  #define RTA_MAX_NUM_CLIENT_TIMERS 0
179 #endif
180 
181 /* conditionally add timers for optional client explicit connection functionality */
182 #ifdef EIPC_EM_CLASS3_CNXN_USED
183  #define RTA_MAX_NUM_EM_CLIENT_TIMERS EIPC_USERSYS_MAX_NUM_SERVERS
184 #else
185  #define RTA_MAX_NUM_EM_CLIENT_TIMERS 0
186 #endif
187 
188 /* conditionally add timers for optional client I/O functionality */
189 #define RTA_MAX_NUM_IO_CLIENT_TIMERS (EIPC_IO_MAX_NUM_IO_SERVERS * 2)
190 
191 /* make sure we have enough timers (add one since we are 1 based (0 is invalid)) */
192 #define RTA_MAX_NUM_TIMERS ( 1 + (EIPS_CNXN_MAXTOTALCNXNS) \
193  + (EIPS_USER_MAX_NUM_IO_CNXNS*2) \
194  + EIPS_USER_MAX_NUM_TIMERS \
195  + RTA_MAX_NUM_CLIENT_TIMERS \
196  + RTA_MAX_NUM_EM_CLIENT_TIMERS \
197  + RTA_MAX_NUM_IO_CLIENT_TIMERS )
198 
199 /* --------------------------------------------------------------- */
200 /* END: EIP TIMER DEFINITIONS */
201 /* --------------------------------------------------------------- */
202 
203 #endif /* __EIPS_SYSTEM_H__ */