libethercat - an embeddable realtime EtherCAT-master library
Communicate with EtherCAT slaves attached to a Network interface.
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1
13/*
14 * This file is part of libethercat.
15 *
16 * libethercat is free software; you can redistribute it and/or
17 * modify it under the terms of the GNU Lesser General Public
18 * License as published by the Free Software Foundation; either
19 * version 3 of the License, or (at your option) any later version.
20 *
21 * libethercat is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 * Lesser General Public License for more details.
25 *
26 * You should have received a copy of the GNU Lesser General Public
27 * License along with libethercat (LICENSE.LGPL-V3); if not, write
28 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
29 * Floor, Boston, MA 02110-1301, USA.
30 *
31 * Please note that the use of the EtherCAT technology, the EtherCAT
32 * brand name and the EtherCAT logo is only permitted if the property
33 * rights of Beckhoff Automation GmbH are observed. For further
34 * information please contact Beckhoff Automation GmbH & Co. KG,
35 * Hülshorstweg 20, D-33415 Verl, Germany (www.beckhoff.com) or the
36 * EtherCAT Technology Group, Ostendstraße 196, D-90482 Nuremberg,
37 * Germany (ETG, www.ethercat.org).
38 *
39 */
40
41#ifndef LIBETHERCAT_COMMON_H
42#define LIBETHERCAT_COMMON_H
43
44#include <libethercat/config.h>
45
46#include <libosal/types.h>
47
48#include <stdint.h>
49
50#ifdef LIBETHERCAT_MAX_SLAVES
52#define LEC_MAX_SLAVES ( (osal_size_t)LIBETHERCAT_MAX_SLAVES )
53#else
55#define LEC_MAX_SLAVES ( (osal_size_t) 256u)
56#endif
57
58#ifdef LIBETHERCAT_MAX_GROUPS
60#define LEC_MAX_GROUPS ( (osal_size_t)LIBETHERCAT_MAX_GROUPS )
61#else
63#define LEC_MAX_GROUPS ( (osal_size_t) 8u)
64#endif
65
66#ifdef LIBETHERCAT_MAX_PDLEN
68#define LEC_MAX_PDLEN ( (osal_size_t)LIBETHERCAT_MAX_PDLEN )
69#else
71#define LEC_MAX_PDLEN ( (osal_size_t)(2u * 1518u))
72#endif
73
74#ifdef LIBETHERCAT_MAX_MBX_ENTRIES
76#define LEC_MAX_MBX_ENTRIES ( (osal_size_t)LIBETHERCAT_MAX_MBX_ENTRIES )
77#else
79#define LEC_MAX_MBX_ENTRIES ( (osal_size_t) 16u)
80#endif
81
82#ifdef LIBETHERCAT_MAX_INIT_CMD_DATA
84#define LEC_MAX_INIT_CMD_DATA ( (osal_size_t)LIBETHERCAT_MAX_INIT_CMD_DATA )
85#else
87#define LEC_MAX_INIT_CMD_DATA ( (osal_size_t) 2048u)
88#endif
89
90#ifdef LIBETHERCAT_MAX_SLAVE_FMMU
92#define LEC_MAX_SLAVE_FMMU ( (osal_size_t)LIBETHERCAT_MAX_SLAVE_FMMU )
93#else
95#define LEC_MAX_SLAVE_FMMU ( (osal_size_t) 8u)
96#endif
97
98#ifdef LIBETHERCAT_MAX_SLAVE_SM
100#define LEC_MAX_SLAVE_SM ( (osal_size_t)LIBETHERCAT_MAX_SLAVE_SM )
101#else
103#define LEC_MAX_SLAVE_SM ( (osal_size_t) 8u)
104#endif
105
106#ifdef LIBETHERCAT_MAX_DATAGRAMS
108#define LEC_MAX_DATAGRAMS ( (osal_size_t)LIBETHERCAT_MAX_DATAGRAMS )
109#else
111#define LEC_MAX_DATAGRAMS ( (osal_size_t) 100u)
112#endif
113
114#ifdef LIBETHERCAT_MAX_EEPROM_CAT_SM
116#define LEC_MAX_EEPROM_CAT_SM ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_SM )
117#else
119#define LEC_MAX_EEPROM_CAT_SM ( (osal_size_t)LEC_MAX_SLAVE_SM)
120#endif
121
122#ifdef LIBETHERCAT_MAX_EEPROM_CAT_FMMU
124#define LEC_MAX_EEPROM_CAT_FMMU ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_FMMU )
125#else
127#define LEC_MAX_EEPROM_CAT_FMMU ( (osal_size_t)LEC_MAX_SLAVE_FMMU)
128#endif
129
130#ifdef LIBETHERCAT_MAX_EEPROM_CAT_PDO
132#define LEC_MAX_EEPROM_CAT_PDO ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_PDO )
133#else
135#define LEC_MAX_EEPROM_CAT_PDO ( (osal_size_t) 128u)
136#endif
137
138#ifdef LIBETHERCAT_MAX_EEPROM_CAT_PDO_ENTRIES
140#define LEC_MAX_EEPROM_CAT_PDO_ENTRIES ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_PDO_ENTRIES )
141#else
143#define LEC_MAX_EEPROM_CAT_PDO_ENTRIES ( (osal_size_t) 32u)
144#endif
145
146#ifdef LIBETHERCAT_MAX_EEPROM_CAT_STRINGS
148#define LEC_MAX_EEPROM_CAT_STRINGS ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_STRINGS )
149#else
151#define LEC_MAX_EEPROM_CAT_STRINGS ( (osal_size_t) 128u)
152#endif
153
154#ifdef LIBETHERCAT_MAX_EEPROM_CAT_DC
156#define LEC_MAX_EEPROM_CAT_DC ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_DC )
157#else
159#define LEC_MAX_EEPROM_CAT_DC ( (osal_size_t) 8u)
160#endif
161
162#ifdef LIBETHERCAT_MAX_STRING_LEN
164#define LEC_MAX_STRING_LEN ( (osal_size_t)LIBETHERCAT_MAX_STRING_LEN )
165#else
167#define LEC_MAX_STRING_LEN ( (osal_size_t) 128u)
168#endif
169
170#ifdef LIBETHERCAT_MAX_DATA
172#define LEC_MAX_DATA ( (osal_size_t)LIBETHERCAT_MAX_DATA )
173#else
175#define LEC_MAX_DATA ( (osal_size_t) 4096u)
176#endif
177
178#ifdef LIBETHERCAT_MAX_DS402_SUBDEVS
180#define LEC_MAX_DS402_SUBDEVS ( (osal_size_t)LIBETHERCAT_MAX_DS402_SUBDEVS )
181#else
183#define LEC_MAX_DS402_SUBDEVS ( (osal_size_t) 4u)
184#endif
185
186#ifdef LIBETHERCAT_MAX_COE_EMERGENCIES
188#define LEC_MAX_COE_EMERGENCIES ( (osal_size_t)LIBETHERCAT_MAX_COE_EMERGENCIES )
189#else
191#define LEC_MAX_COE_EMERGENCIES ( (osal_size_t) 10u)
192#endif
193
194#ifdef LIBETHERCAT_MAX_COE_EMERGENCY_MSG_LEN
196#define LEC_MAX_COE_EMERGENCY_MSG_LEN ( (osal_size_t)LIBETHERCAT_MAX_COE_EMERGENCY_MSG_LEN )
197#else
199#define LEC_MAX_COE_EMERGENCY_MSG_LEN ( (osal_size_t) 32u)
200#endif
201
202#define PACKED __attribute__((__packed__))
203
204#ifndef min
205#define min(a, b) ((a) < (b) ? (a) : (b))
206#endif
207
208typedef osal_uint8_t ec_data_t[LEC_MAX_DATA]; /* variants for easy data access */
209
211typedef struct ec_pd {
212 osal_uint8_t *pd;
213 osal_size_t len;
215
216typedef osal_uint16_t ec_state_t;
217#define EC_STATE_UNKNOWN ((osal_uint16_t)(0x0000u))
218#define EC_STATE_INIT ((osal_uint16_t)(0x0001u))
219#define EC_STATE_PREOP ((osal_uint16_t)(0x0002u))
220#define EC_STATE_BOOT ((osal_uint16_t)(0x0003u))
221#define EC_STATE_SAFEOP ((osal_uint16_t)(0x0004u))
222#define EC_STATE_OP ((osal_uint16_t)(0x0008u))
223#define EC_STATE_MASK ((osal_uint16_t)(0x000Fu))
224#define EC_STATE_ERROR ((osal_uint16_t)(0x0010u))
225#define EC_STATE_RESET ((osal_uint16_t)(0x0010u))
226
227#endif // LIBETHERCAT_COMMON_H
228
#define LEC_MAX_DATA
Maximum data length.
Definition common.h:175
struct ec_pd ec_pd_t
process data structure
process data structure
Definition common.h:211
osal_size_t len
process data length
Definition common.h:213
osal_uint8_t * pd
pointer to process data
Definition common.h:212