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
#ifdef HAVE_CONFIG_H
45
#include <libethercat/config.h>
46
#endif
47
48
#include <libosal/types.h>
49
50
#include <stdint.h>
51
52
#ifdef LIBETHERCAT_MAX_SLAVES
54
#define LEC_MAX_SLAVES ( (osal_size_t)LIBETHERCAT_MAX_SLAVES )
55
#else
57
#define LEC_MAX_SLAVES ( (osal_size_t) 256u)
58
#endif
59
60
#ifdef LIBETHERCAT_MAX_GROUPS
62
#define LEC_MAX_GROUPS ( (osal_size_t)LIBETHERCAT_MAX_GROUPS )
63
#else
65
#define LEC_MAX_GROUPS ( (osal_size_t) 8u)
66
#endif
67
68
#ifdef LIBETHERCAT_MAX_PDLEN
70
#define LEC_MAX_PDLEN ( (osal_size_t)LIBETHERCAT_MAX_PDLEN )
71
#else
73
#define LEC_MAX_PDLEN ( (osal_size_t)(2u * 1518u))
74
#endif
75
76
#ifdef LIBETHERCAT_MAX_MBX_ENTRIES
78
#define LEC_MAX_MBX_ENTRIES ( (osal_size_t)LIBETHERCAT_MAX_MBX_ENTRIES )
79
#else
81
#define LEC_MAX_MBX_ENTRIES ( (osal_size_t) 16u)
82
#endif
83
84
#ifdef LIBETHERCAT_MAX_INIT_CMD_DATA
86
#define LEC_MAX_INIT_CMD_DATA ( (osal_size_t)LIBETHERCAT_MAX_INIT_CMD_DATA )
87
#else
89
#define LEC_MAX_INIT_CMD_DATA ( (osal_size_t) 2048u)
90
#endif
91
92
#ifdef LIBETHERCAT_MAX_SLAVE_FMMU
94
#define LEC_MAX_SLAVE_FMMU ( (osal_size_t)LIBETHERCAT_MAX_SLAVE_FMMU )
95
#else
97
#define LEC_MAX_SLAVE_FMMU ( (osal_size_t) 8u)
98
#endif
99
100
#ifdef LIBETHERCAT_MAX_SLAVE_SM
102
#define LEC_MAX_SLAVE_SM ( (osal_size_t)LIBETHERCAT_MAX_SLAVE_SM )
103
#else
105
#define LEC_MAX_SLAVE_SM ( (osal_size_t) 8u)
106
#endif
107
108
#ifdef LIBETHERCAT_MAX_DATAGRAMS
110
#define LEC_MAX_DATAGRAMS ( (osal_size_t)LIBETHERCAT_MAX_DATAGRAMS )
111
#else
113
#define LEC_MAX_DATAGRAMS ( (osal_size_t) 100u)
114
#endif
115
116
#ifdef LIBETHERCAT_MAX_EEPROM_CAT_SM
118
#define LEC_MAX_EEPROM_CAT_SM ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_SM )
119
#else
121
#define LEC_MAX_EEPROM_CAT_SM ( (osal_size_t)LEC_MAX_SLAVE_SM)
122
#endif
123
124
#ifdef LIBETHERCAT_MAX_EEPROM_CAT_FMMU
126
#define LEC_MAX_EEPROM_CAT_FMMU ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_FMMU )
127
#else
129
#define LEC_MAX_EEPROM_CAT_FMMU ( (osal_size_t)LEC_MAX_SLAVE_FMMU)
130
#endif
131
132
#ifdef LIBETHERCAT_MAX_EEPROM_CAT_PDO
134
#define LEC_MAX_EEPROM_CAT_PDO ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_PDO )
135
#else
137
#define LEC_MAX_EEPROM_CAT_PDO ( (osal_size_t) 128u)
138
#endif
139
140
#ifdef LIBETHERCAT_MAX_EEPROM_CAT_PDO_ENTRIES
142
#define LEC_MAX_EEPROM_CAT_PDO_ENTRIES ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_PDO_ENTRIES )
143
#else
145
#define LEC_MAX_EEPROM_CAT_PDO_ENTRIES ( (osal_size_t) 32u)
146
#endif
147
148
#ifdef LIBETHERCAT_MAX_EEPROM_CAT_STRINGS
150
#define LEC_MAX_EEPROM_CAT_STRINGS ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_STRINGS )
151
#else
153
#define LEC_MAX_EEPROM_CAT_STRINGS ( (osal_size_t) 128u)
154
#endif
155
156
#ifdef LIBETHERCAT_MAX_EEPROM_CAT_DC
158
#define LEC_MAX_EEPROM_CAT_DC ( (osal_size_t)LIBETHERCAT_MAX_EEPROM_CAT_DC )
159
#else
161
#define LEC_MAX_EEPROM_CAT_DC ( (osal_size_t) 8u)
162
#endif
163
164
#ifdef LIBETHERCAT_MAX_STRING_LEN
166
#define LEC_MAX_STRING_LEN ( (osal_size_t)LIBETHERCAT_MAX_STRING_LEN )
167
#else
169
#define LEC_MAX_STRING_LEN ( (osal_size_t) 128u)
170
#endif
171
172
#ifdef LIBETHERCAT_MAX_DATA
174
#define LEC_MAX_DATA ( (osal_size_t)LIBETHERCAT_MAX_DATA )
175
#else
177
#define LEC_MAX_DATA ( (osal_size_t) 4096u)
178
#endif
179
180
#ifdef LIBETHERCAT_MAX_DS402_SUBDEVS
182
#define LEC_MAX_DS402_SUBDEVS ( (osal_size_t)LIBETHERCAT_MAX_DS402_SUBDEVS )
183
#else
185
#define LEC_MAX_DS402_SUBDEVS ( (osal_size_t) 4u)
186
#endif
187
188
#ifdef LIBETHERCAT_MAX_COE_EMERGENCIES
190
#define LEC_MAX_COE_EMERGENCIES ( (osal_size_t)LIBETHERCAT_MAX_COE_EMERGENCIES )
191
#else
193
#define LEC_MAX_COE_EMERGENCIES ( (osal_size_t) 10u)
194
#endif
195
196
#ifdef LIBETHERCAT_MAX_COE_EMERGENCY_MSG_LEN
198
#define LEC_MAX_COE_EMERGENCY_MSG_LEN ( (osal_size_t)LIBETHERCAT_MAX_COE_EMERGENCY_MSG_LEN )
199
#else
201
#define LEC_MAX_COE_EMERGENCY_MSG_LEN ( (osal_size_t) 32u)
202
#endif
203
204
#define PACKED __attribute__((__packed__))
205
206
#ifndef min
207
#define min(a, b) ((a) < (b) ? (a) : (b))
208
#endif
209
210
typedef
osal_uint8_t ec_data_t[
LEC_MAX_DATA
];
/* variants for easy data access */
211
213
typedef
struct
ec_pd
{
214
osal_uint8_t *
pd
;
215
osal_size_t
len
;
216
}
ec_pd_t
;
217
218
typedef
osal_uint16_t ec_state_t;
219
#define EC_STATE_UNKNOWN ((osal_uint16_t)(0x0000u))
220
#define EC_STATE_INIT ((osal_uint16_t)(0x0001u))
221
#define EC_STATE_PREOP ((osal_uint16_t)(0x0002u))
222
#define EC_STATE_BOOT ((osal_uint16_t)(0x0003u))
223
#define EC_STATE_SAFEOP ((osal_uint16_t)(0x0004u))
224
#define EC_STATE_OP ((osal_uint16_t)(0x0008u))
225
#define EC_STATE_MASK ((osal_uint16_t)(0x000Fu))
226
#define EC_STATE_ERROR ((osal_uint16_t)(0x0010u))
227
#define EC_STATE_RESET ((osal_uint16_t)(0x0010u))
228
229
#endif
// LIBETHERCAT_COMMON_H
230
LEC_MAX_DATA
#define LEC_MAX_DATA
Maximum data length.
Definition
common.h:177
ec_pd_t
struct ec_pd ec_pd_t
process data structure
ec_pd
process data structure
Definition
common.h:213
ec_pd::len
osal_size_t len
process data length
Definition
common.h:215
ec_pd::pd
osal_uint8_t * pd
pointer to process data
Definition
common.h:214
include
libethercat
common.h
Generated by
1.9.8