author | Florian Pose <fp@igh-essen.com> |
Mon, 19 Sep 2011 13:12:32 +0200 | |
changeset 2145 | a63ed5513117 |
parent 2117 | afb40fd6018e |
child 2589 | 2b9c78543663 |
permissions | -rw-r--r-- |
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
33
diff
changeset
|
1 |
/****************************************************************************** |
0 | 2 |
* |
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
33
diff
changeset
|
3 |
* $Id$ |
0 | 4 |
* |
1326
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
5 |
* Copyright (C) 2006-2008 Florian Pose, Ingenieurgemeinschaft IgH |
197
b9a6e2c22745
GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents:
195
diff
changeset
|
6 |
* |
b9a6e2c22745
GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents:
195
diff
changeset
|
7 |
* This file is part of the IgH EtherCAT Master. |
b9a6e2c22745
GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents:
195
diff
changeset
|
8 |
* |
1326
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
9 |
* The IgH EtherCAT Master is free software; you can redistribute it and/or |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
10 |
* modify it under the terms of the GNU General Public License version 2, as |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
11 |
* published by the Free Software Foundation. |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
12 |
* |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
13 |
* The IgH EtherCAT Master is distributed in the hope that it will be useful, |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
14 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
15 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
16 |
* Public License for more details. |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
17 |
* |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
18 |
* You should have received a copy of the GNU General Public License along |
ef907b0b5125
merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only.
Florian Pose <fp@igh-essen.com>
parents:
1312
diff
changeset
|
19 |
* with the IgH EtherCAT Master; if not, write to the Free Software |
197
b9a6e2c22745
GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents:
195
diff
changeset
|
20 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
b9a6e2c22745
GPLv2 License and enhanced Doxygen output.
Florian Pose <fp@igh-essen.com>
parents:
195
diff
changeset
|
21 |
* |
1363
11c0b2caa253
Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents:
1335
diff
changeset
|
22 |
* --- |
11c0b2caa253
Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents:
1335
diff
changeset
|
23 |
* |
11c0b2caa253
Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents:
1335
diff
changeset
|
24 |
* The license mentioned above concerns the source code only. Using the |
11c0b2caa253
Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents:
1335
diff
changeset
|
25 |
* EtherCAT technology and brand is only permitted in compliance with the |
11c0b2caa253
Improved and added license headers.
Florian Pose <fp@igh-essen.com>
parents:
1335
diff
changeset
|
26 |
* industrial property and similar rights of Beckhoff Automation GmbH. |
246
0bf7c769de06
Changed license headers and added EtherCAT license notice.
Florian Pose <fp@igh-essen.com>
parents:
241
diff
changeset
|
27 |
* |
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
33
diff
changeset
|
28 |
*****************************************************************************/ |
0 | 29 |
|
199
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
30 |
/** |
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
31 |
\file |
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
32 |
EtherCAT master structure. |
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
33 |
*/ |
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
34 |
|
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
35 |
/*****************************************************************************/ |
04ecf40fc2e9
Doxygen added interface modules and file documentation.
Florian Pose <fp@igh-essen.com>
parents:
197
diff
changeset
|
36 |
|
883
4963e22a267a
Equalized defines against duplicated header inclusion.
Florian Pose <fp@igh-essen.com>
parents:
872
diff
changeset
|
37 |
#ifndef __EC_MASTER_H__ |
4963e22a267a
Equalized defines against duplicated header inclusion.
Florian Pose <fp@igh-essen.com>
parents:
872
diff
changeset
|
38 |
#define __EC_MASTER_H__ |
0 | 39 |
|
1250
642048176899
Applied patch by Mario Witkowski to support the new class/device
Florian Pose <fp@igh-essen.com>
parents:
1241
diff
changeset
|
40 |
#include <linux/version.h> |
95
0066de7a456d
Domains als Liste verwaltet.
Florian Pose <fp@igh-essen.com>
parents:
94
diff
changeset
|
41 |
#include <linux/list.h> |
191 | 42 |
#include <linux/timer.h> |
601
d6d951b766e3
Introduced EEPROM write requests: EEPROM write operations from user
Florian Pose <fp@igh-essen.com>
parents:
597
diff
changeset
|
43 |
#include <linux/wait.h> |
1241
794cbccdcd00
Moved threads to kthread interface.
Florian Pose <fp@igh-essen.com>
parents:
1200
diff
changeset
|
44 |
#include <linux/kthread.h> |
1369
61793d845ad6
Preparations to compile against 2.6.27.
Florian Pose <fp@igh-essen.com>
parents:
1363
diff
changeset
|
45 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
52
diff
changeset
|
46 |
#include "device.h" |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
52
diff
changeset
|
47 |
#include "domain.h" |
1485 | 48 |
#include "ethernet.h" |
528
f789bdd78b54
Layed out slave state machines in own files fsm_slave.[ch]; renamed fsm.[ch] to fsm_master.[ch]
Florian Pose <fp@igh-essen.com>
parents:
525
diff
changeset
|
49 |
#include "fsm_master.h" |
922
fede1d8f5b71
Added the new ethercat comman-line tool with lsec functionality.
Florian Pose <fp@igh-essen.com>
parents:
900
diff
changeset
|
50 |
#include "cdev.h" |
0 | 51 |
|
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
52 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
33
diff
changeset
|
53 |
/*****************************************************************************/ |
0 | 54 |
|
1921 | 55 |
/** Convenience macro for printing master-specific information to syslog. |
56 |
* |
|
57 |
* This will print the message in \a fmt with a prefixed "EtherCAT <INDEX>: ", |
|
58 |
* where INDEX is the master index. |
|
59 |
* |
|
60 |
* \param master EtherCAT master |
|
61 |
* \param fmt format string (like in printf()) |
|
62 |
* \param args arguments (optional) |
|
63 |
*/ |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
64 |
#ifdef USE_TRACE_PRINTK |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
65 |
#define EC_MASTER_INFO(master, fmt, args...) \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
66 |
do { \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
67 |
__trace_printk(_THIS_IP_,"EtherCAT %u: " fmt, master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
68 |
printk(KERN_INFO "EtherCAT %u: " fmt, master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
69 |
} while (0) |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
70 |
#else |
1921 | 71 |
#define EC_MASTER_INFO(master, fmt, args...) \ |
72 |
printk(KERN_INFO "EtherCAT %u: " fmt, master->index, ##args) |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
73 |
#endif |
1921 | 74 |
|
75 |
/** Convenience macro for printing master-specific errors to syslog. |
|
76 |
* |
|
77 |
* This will print the message in \a fmt with a prefixed "EtherCAT <INDEX>: ", |
|
78 |
* where INDEX is the master index. |
|
79 |
* |
|
80 |
* \param master EtherCAT master |
|
81 |
* \param fmt format string (like in printf()) |
|
82 |
* \param args arguments (optional) |
|
83 |
*/ |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
84 |
#ifdef USE_TRACE_PRINTK |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
85 |
#define EC_MASTER_ERR(master, fmt, args...) \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
86 |
do { \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
87 |
__trace_printk(_THIS_IP_,"EtherCAT ERROR %u: " fmt, master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
88 |
printk(KERN_ERR "EtherCAT ERROR %u: " fmt, master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
89 |
} while (0) |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
90 |
#else |
1921 | 91 |
#define EC_MASTER_ERR(master, fmt, args...) \ |
92 |
printk(KERN_ERR "EtherCAT ERROR %u: " fmt, master->index, ##args) |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
93 |
#endif |
1921 | 94 |
|
95 |
/** Convenience macro for printing master-specific warnings to syslog. |
|
96 |
* |
|
97 |
* This will print the message in \a fmt with a prefixed "EtherCAT <INDEX>: ", |
|
98 |
* where INDEX is the master index. |
|
99 |
* |
|
100 |
* \param master EtherCAT master |
|
101 |
* \param fmt format string (like in printf()) |
|
102 |
* \param args arguments (optional) |
|
103 |
*/ |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
104 |
#ifdef USE_TRACE_PRINTK |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
105 |
#define EC_MASTER_WARN(master, fmt, args...) \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
106 |
do { \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
107 |
__trace_printk(_THIS_IP_,"EtherCAT WARNING %u: " fmt, master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
108 |
printk(KERN_WARNING "EtherCAT WARNING %u: " fmt, master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
109 |
} while (0) |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
110 |
#else |
1921 | 111 |
#define EC_MASTER_WARN(master, fmt, args...) \ |
112 |
printk(KERN_WARNING "EtherCAT WARNING %u: " fmt, master->index, ##args) |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
113 |
#endif |
1921 | 114 |
|
115 |
/** Convenience macro for printing master-specific debug messages to syslog. |
|
116 |
* |
|
117 |
* This will print the message in \a fmt with a prefixed "EtherCAT <INDEX>: ", |
|
118 |
* where INDEX is the master index. |
|
119 |
* |
|
120 |
* \param master EtherCAT master |
|
121 |
* \param fmt format string (like in printf()) |
|
122 |
* \param args arguments (optional) |
|
123 |
*/ |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
124 |
#ifdef USE_TRACE_PRINTK |
1921 | 125 |
#define EC_MASTER_DBG(master, level, fmt, args...) \ |
126 |
do { \ |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
127 |
__trace_printk(_THIS_IP_,"EtherCAT DEBUG%u %u: " fmt, \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
128 |
level,master->index, ##args); \ |
1921 | 129 |
if (master->debug_level >= level) { \ |
130 |
printk(KERN_DEBUG "EtherCAT DEBUG %u: " fmt, \ |
|
131 |
master->index, ##args); \ |
|
132 |
} \ |
|
133 |
} while (0) |
|
2037
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
134 |
#else |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
135 |
#define EC_MASTER_DBG(master, level, fmt, args...) \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
136 |
do { \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
137 |
if (master->debug_level >= level) { \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
138 |
printk(KERN_DEBUG "EtherCAT DEBUG %u: " fmt, \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
139 |
master->index, ##args); \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
140 |
} \ |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
141 |
} while (0) |
ea0319750e13
Optionally compile with trace_printk support
Martin Troxler <ch1010277@ch10pc446>
parents:
2028
diff
changeset
|
142 |
#endif |
1921 | 143 |
|
144 |
/*****************************************************************************/ |
|
145 |
||
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
146 |
/** EtherCAT master phase. |
792
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
147 |
*/ |
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
148 |
typedef enum { |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
149 |
EC_ORPHANED, /**< Orphaned phase. The master has no Ethernet device |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
150 |
attached. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
151 |
EC_IDLE, /**< Idle phase. An Ethernet device is attached, but the master |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
152 |
is not in use, yet. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
153 |
EC_OPERATION /**< Operation phase. The master was requested by a realtime |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
154 |
application. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
155 |
} ec_master_phase_t; |
191 | 156 |
|
157 |
/*****************************************************************************/ |
|
158 |
||
792
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
159 |
/** Cyclic statistics. |
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
160 |
*/ |
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
161 |
typedef struct { |
293
14aeb79aa992
Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents:
286
diff
changeset
|
162 |
unsigned int timeouts; /**< datagram timeouts */ |
195
674071846ee3
Translated all comments and documentation to english language.
Florian Pose <fp@igh-essen.com>
parents:
191
diff
changeset
|
163 |
unsigned int corrupted; /**< corrupted frames */ |
332
e16093374dfd
New statistic outputs to avoid blasting the logs.
Florian Pose <fp@igh-essen.com>
parents:
331
diff
changeset
|
164 |
unsigned int unmatched; /**< unmatched datagrams (received, but not |
e16093374dfd
New statistic outputs to avoid blasting the logs.
Florian Pose <fp@igh-essen.com>
parents:
331
diff
changeset
|
165 |
queued any longer) */ |
344
5d8281f1aa2a
Replaced longer cycle timestamps with jiffies.
Florian Pose <fp@igh-essen.com>
parents:
335
diff
changeset
|
166 |
unsigned long output_jiffies; /**< time of last output */ |
849
4b712ec8929d
Removed slave pointer from ec_sdo_request_t class.
Florian Pose <fp@igh-essen.com>
parents:
814
diff
changeset
|
167 |
} ec_stats_t; |
98
f564d0929292
MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
95
diff
changeset
|
168 |
|
f564d0929292
MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
95
diff
changeset
|
169 |
/*****************************************************************************/ |
f564d0929292
MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
95
diff
changeset
|
170 |
|
792
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
171 |
/** EtherCAT master. |
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
172 |
* |
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
173 |
* Manages slaves, domains and IO. |
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
174 |
*/ |
849
4b712ec8929d
Removed slave pointer from ec_sdo_request_t class.
Florian Pose <fp@igh-essen.com>
parents:
814
diff
changeset
|
175 |
struct ec_master { |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
176 |
unsigned int index; /**< Index. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
177 |
unsigned int reserved; /**< \a True, if the master is in use. */ |
241 | 178 |
|
922
fede1d8f5b71
Added the new ethercat comman-line tool with lsec functionality.
Florian Pose <fp@igh-essen.com>
parents:
900
diff
changeset
|
179 |
ec_cdev_t cdev; /**< Master character device. */ |
1250
642048176899
Applied patch by Mario Witkowski to support the new class/device
Florian Pose <fp@igh-essen.com>
parents:
1241
diff
changeset
|
180 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26) |
642048176899
Applied patch by Mario Witkowski to support the new class/device
Florian Pose <fp@igh-essen.com>
parents:
1241
diff
changeset
|
181 |
struct device *class_device; /**< Master class device. */ |
642048176899
Applied patch by Mario Witkowski to support the new class/device
Florian Pose <fp@igh-essen.com>
parents:
1241
diff
changeset
|
182 |
#else |
1013
52256b75f975
Create class device with device_number information in sysfs.
Florian Pose <fp@igh-essen.com>
parents:
1000
diff
changeset
|
183 |
struct class_device *class_device; /**< Master class device. */ |
1250
642048176899
Applied patch by Mario Witkowski to support the new class/device
Florian Pose <fp@igh-essen.com>
parents:
1241
diff
changeset
|
184 |
#endif |
642048176899
Applied patch by Mario Witkowski to support the new class/device
Florian Pose <fp@igh-essen.com>
parents:
1241
diff
changeset
|
185 |
|
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
186 |
struct ec_mutex_t master_mutex; /**< Master mutex. */ |
922
fede1d8f5b71
Added the new ethercat comman-line tool with lsec functionality.
Florian Pose <fp@igh-essen.com>
parents:
900
diff
changeset
|
187 |
|
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
188 |
ec_device_t main_device; /**< EtherCAT main device. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
189 |
const uint8_t *main_mac; /**< MAC address of main device. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
190 |
ec_device_t backup_device; /**< EtherCAT backup device. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
191 |
const uint8_t *backup_mac; /**< MAC address of backup device. */ |
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
192 |
struct ec_mutex_t device_mutex; /**< Device mutex. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
193 |
|
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
194 |
ec_fsm_master_t fsm; /**< Master state machine. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
195 |
ec_datagram_t fsm_datagram; /**< Datagram used for state machines. */ |
2045
ff2a13a4603c
Reduced frame size when sending to mailbox, uses 2 datagrams. Enabled with configure option --enable-mboxframesize
Martin Troxler <ch1010277@ch10pc446>
parents:
2037
diff
changeset
|
196 |
ec_mailbox_t fsm_mbox; /**< Mailbox used for state machines. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
197 |
ec_master_phase_t phase; /**< Master phase. */ |
1530
96629de2202b
Added ecrt_master_deactivate() to remove the bus configuration.
Florian Pose <fp@igh-essen.com>
parents:
1516
diff
changeset
|
198 |
unsigned int active; /**< Master has been activated. */ |
1925
29161abef052
Write DC system time offsets right after slave scan / config change. Wait for DC clock discipline.
Florian Pose <fp@igh-essen.com>
parents:
1921
diff
changeset
|
199 |
unsigned int config_changed; /**< The configuration changed. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
200 |
unsigned int injection_seq_fsm; /**< Datagram injection sequence number |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
201 |
for the FSM side. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
202 |
unsigned int injection_seq_rt; /**< Datagram injection sequence number |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
203 |
for the realtime side. */ |
334
2be97e069602
Master information, timing.
Florian Pose <fp@igh-essen.com>
parents:
332
diff
changeset
|
204 |
|
1000
5746fdd1ca2e
Store slaves in an array instead of a list.
Florian Pose <fp@igh-essen.com>
parents:
997
diff
changeset
|
205 |
ec_slave_t *slaves; /**< Array of slaves on the bus. */ |
5746fdd1ca2e
Store slaves in an array instead of a list.
Florian Pose <fp@igh-essen.com>
parents:
997
diff
changeset
|
206 |
unsigned int slave_count; /**< Number of slaves on the bus. */ |
792
3778920f61e4
Implemented most realtime interface changes for version 1.4, improved
Florian Pose <fp@igh-essen.com>
parents:
758
diff
changeset
|
207 |
|
1939
1ba48f78a0a5
Fixed bug that caused the configuration not to be cleared when reserved but
Florian Pose <fp@igh-essen.com>
parents:
1930
diff
changeset
|
208 |
/* Configuration applied by the application. */ |
1028
afdd4bdbb7ec
Removed configs_attached flag; changed return value of
Florian Pose <fp@igh-essen.com>
parents:
1013
diff
changeset
|
209 |
struct list_head configs; /**< List of slave configurations. */ |
1939
1ba48f78a0a5
Fixed bug that caused the configuration not to be cleared when reserved but
Florian Pose <fp@igh-essen.com>
parents:
1930
diff
changeset
|
210 |
struct list_head domains; /**< List of domains. */ |
656
370aa8c2d1b1
Slave configuration exclusively from master thread; removed
Florian Pose <fp@igh-essen.com>
parents:
647
diff
changeset
|
211 |
|
1396
9d04cc08f40f
DC sync reference clock to application time. TBC...
Florian Pose <fp@igh-essen.com>
parents:
1394
diff
changeset
|
212 |
u64 app_time; /**< Time of the last ecrt_master_sync() call. */ |
1436
08eaf72409bb
Use application start time as a common reference for cyclic generation
Florian Pose <fp@igh-essen.com>
parents:
1425
diff
changeset
|
213 |
u64 app_start_time; /**< Application start time. */ |
1925
29161abef052
Write DC system time offsets right after slave scan / config change. Wait for DC clock discipline.
Florian Pose <fp@igh-essen.com>
parents:
1921
diff
changeset
|
214 |
u8 has_app_time; /**< Application time is valid. */ |
1396
9d04cc08f40f
DC sync reference clock to application time. TBC...
Florian Pose <fp@igh-essen.com>
parents:
1394
diff
changeset
|
215 |
ec_datagram_t ref_sync_datagram; /**< Datagram used for synchronizing the |
9d04cc08f40f
DC sync reference clock to application time. TBC...
Florian Pose <fp@igh-essen.com>
parents:
1394
diff
changeset
|
216 |
reference clock to the master clock. */ |
1394
e77728ddf0f9
Introduced ecrt_master_sync() for synchronizing slave clocks to reference clock.
Florian Pose <fp@igh-essen.com>
parents:
1388
diff
changeset
|
217 |
ec_datagram_t sync_datagram; /**< Datagram used for DC drift |
e77728ddf0f9
Introduced ecrt_master_sync() for synchronizing slave clocks to reference clock.
Florian Pose <fp@igh-essen.com>
parents:
1388
diff
changeset
|
218 |
compensation. */ |
1535
0c484ee12d89
DC synchrony monitoring methods.
Florian Pose <fp@igh-essen.com>
parents:
1530
diff
changeset
|
219 |
ec_datagram_t sync_mon_datagram; /**< Datagram used for DC synchronisation |
0c484ee12d89
DC synchrony monitoring methods.
Florian Pose <fp@igh-essen.com>
parents:
1530
diff
changeset
|
220 |
monitoring. */ |
1425
c1322a8793c0
Transition delay calculation. TBC...
Florian Pose <fp@igh-essen.com>
parents:
1421
diff
changeset
|
221 |
ec_slave_t *dc_ref_clock; /**< DC reference clock slave. */ |
1987
f452c93f7723
Improved distributed clock offset calculation to speed-up initial drift compensation
Martin Troxler <martin.troxler@komaxgroup.com>
parents:
1907
diff
changeset
|
222 |
#ifdef EC_HAVE_CYCLES |
2001
2e05246f3b00
renamed dc_cycles_app_time -> dc_cycles_app_start_time & dc_jiffies_app_time -> dc_jiffies_app_start_time
Martin Troxler <ch1010277@ch10pc446>
parents:
1995
diff
changeset
|
223 |
cycles_t dc_cycles_app_start_time; /** cycles at last ecrt_master_sync() call.*/ |
2e05246f3b00
renamed dc_cycles_app_time -> dc_cycles_app_start_time & dc_jiffies_app_time -> dc_jiffies_app_start_time
Martin Troxler <ch1010277@ch10pc446>
parents:
1995
diff
changeset
|
224 |
#endif |
2e05246f3b00
renamed dc_cycles_app_time -> dc_cycles_app_start_time & dc_jiffies_app_time -> dc_jiffies_app_start_time
Martin Troxler <ch1010277@ch10pc446>
parents:
1995
diff
changeset
|
225 |
unsigned long dc_jiffies_app_start_time;/** jiffies at last |
1987
f452c93f7723
Improved distributed clock offset calculation to speed-up initial drift compensation
Martin Troxler <martin.troxler@komaxgroup.com>
parents:
1907
diff
changeset
|
226 |
ecrt_master_sync() call.*/ |
900
f8b5c6d21705
Removed bus validation; slave configuration during realtime operation;
Florian Pose <fp@igh-essen.com>
parents:
883
diff
changeset
|
227 |
unsigned int scan_busy; /**< Current scan state. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
228 |
unsigned int allow_scan; /**< \a True, if slave scanning is allowed. */ |
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
229 |
struct ec_mutex_t scan_mutex; /**< Mutex protecting the \a scan_busy |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
230 |
variable and the \a allow_scan flag. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
231 |
wait_queue_head_t scan_queue; /**< Queue for processes that wait for |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
232 |
slave scanning. */ |
656
370aa8c2d1b1
Slave configuration exclusively from master thread; removed
Florian Pose <fp@igh-essen.com>
parents:
647
diff
changeset
|
233 |
|
900
f8b5c6d21705
Removed bus validation; slave configuration during realtime operation;
Florian Pose <fp@igh-essen.com>
parents:
883
diff
changeset
|
234 |
unsigned int config_busy; /**< State of slave configuration. */ |
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
235 |
struct ec_mutex_t config_mutex; /**< Mutex protecting the \a config_busy |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
236 |
variable and the allow_config flag. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
237 |
wait_queue_head_t config_queue; /**< Queue for processes that wait for |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
238 |
slave configuration. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
239 |
|
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
240 |
struct list_head datagram_queue; /**< Datagram queue. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
241 |
uint8_t datagram_index; /**< Current datagram index. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
242 |
|
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
243 |
struct ec_mutex_t fsm_queue_mutex; /**< Mutex protecting the \a |
2021
ee30e7f90c2e
removed now obsolete ext_datagram_queu
Martin Troxler <ch1010277@ch10pc446>
parents:
2020
diff
changeset
|
244 |
fsm_datagram_queue. */ |
2018
6c05411fee9b
replaced injection_seq mechanism with fsm datagram queue
Martin Troxler <ch1010277@ch10pc446>
parents:
2001
diff
changeset
|
245 |
struct list_head fsm_datagram_queue; /**< External Datagram queue. */ |
2021
ee30e7f90c2e
removed now obsolete ext_datagram_queu
Martin Troxler <ch1010277@ch10pc446>
parents:
2020
diff
changeset
|
246 |
|
2094
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
247 |
unsigned int send_interval; /**< Interval between calls to |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
248 |
ecrt_master_send */ |
1907
dd276ae226b4
Added missing code documentation.
Florian Pose <fp@igh-essen.com>
parents:
1848
diff
changeset
|
249 |
size_t max_queue_size; /**< Maximum size of datagram queue */ |
241 | 250 |
|
1399
f79d4bb5b23a
Added debug_level module parameter. debug_level is now unsigned int.
Florian Pose <fp@igh-essen.com>
parents:
1396
diff
changeset
|
251 |
unsigned int debug_level; /**< Master debug level. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
252 |
ec_stats_t stats; /**< Cyclic statistics. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
253 |
|
1241
794cbccdcd00
Moved threads to kthread interface.
Florian Pose <fp@igh-essen.com>
parents:
1200
diff
changeset
|
254 |
struct task_struct *thread; /**< Master thread. */ |
241 | 255 |
|
715
f12ff7c08623
Added --enable-eoe conditional.
Florian Pose <fp@igh-essen.com>
parents:
664
diff
changeset
|
256 |
#ifdef EC_EOE |
1489
f77a1182b6f4
EoE processing with kthread.
Florian Pose <fp@igh-essen.com>
parents:
1485
diff
changeset
|
257 |
struct task_struct *eoe_thread; /**< EoE thread. */ |
1327
4d179b06dd3c
merge -c1604 branches/stable-1.4: Fixed spelling of EtherCAT terms.
Florian Pose <fp@igh-essen.com>
parents:
1326
diff
changeset
|
258 |
struct list_head eoe_handlers; /**< Ethernet over EtherCAT handlers. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
259 |
#endif |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
260 |
|
2028
55854f070c4a
use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex)
Martin Troxler <ch1010277@ch10pc446>
parents:
2024
diff
changeset
|
261 |
struct ec_mutex_t io_mutex; /**< Mutex used in \a IDLE phase. */ |
1500
ed1a733efbc5
Improved the callback mechanism.
Florian Pose <fp@igh-essen.com>
parents:
1489
diff
changeset
|
262 |
|
2024
96e2ae6cce95
ecrt_master_callbacks: replaced send/receive callback mechanism with locking mechanism; removed ecrt_master_send_ext
Martin Troxler <ch1010277@ch10pc446>
parents:
2021
diff
changeset
|
263 |
void (*fsm_queue_lock_cb)(void *); /**< FSM queue lock callback. */ |
96e2ae6cce95
ecrt_master_callbacks: replaced send/receive callback mechanism with locking mechanism; removed ecrt_master_send_ext
Martin Troxler <ch1010277@ch10pc446>
parents:
2021
diff
changeset
|
264 |
void (*fsm_queue_unlock_cb)(void *); /**< FSM queue unlock callback. */ |
2094
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
265 |
void *fsm_queue_locking_data; /**< Data parameter of fsm queue locking |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
266 |
callbacks. */ |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
267 |
void (*app_fsm_queue_lock_cb)(void *); /**< App's FSM queue lock callback. |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
268 |
*/ |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
269 |
void (*app_fsm_queue_unlock_cb)(void *); /**< App's FSM queue unlock |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
270 |
callback. */ |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
271 |
void *app_fsm_queue_locking_data; /**< App's data parameter of fsm queue |
83e9160319ec
Minor: Fixed line wraps and spacing.
Florian Pose <fp@igh-essen.com>
parents:
2045
diff
changeset
|
272 |
locking callbacks. */ |
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
273 |
|
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
274 |
struct list_head sii_requests; /**< SII write requests. */ |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
275 |
wait_queue_head_t sii_queue; /**< Wait queue for SII |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
276 |
write requests from user space. */ |
601
d6d951b766e3
Introduced EEPROM write requests: EEPROM write operations from user
Florian Pose <fp@igh-essen.com>
parents:
597
diff
changeset
|
277 |
|
1388
3c886ec376f5
Renamed phy_ commands to reg_.
Florian Pose <fp@igh-essen.com>
parents:
1369
diff
changeset
|
278 |
struct list_head reg_requests; /**< Register requests. */ |
3c886ec376f5
Renamed phy_ commands to reg_.
Florian Pose <fp@igh-essen.com>
parents:
1369
diff
changeset
|
279 |
wait_queue_head_t reg_queue; /**< Wait queue for register requests. */ |
55
059a9e712aa7
Mit neuer Schnittstelle wieder lauff?hig.
Florian Pose <fp@igh-essen.com>
parents:
54
diff
changeset
|
280 |
}; |
0 | 281 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
33
diff
changeset
|
282 |
/*****************************************************************************/ |
0 | 283 |
|
1279
6911450535b7
merge -c1522 branches/stable-1.4: Fixed jace in jiffies timeout calculation.
Florian Pose <fp@igh-essen.com>
parents:
1252
diff
changeset
|
284 |
// static funtions |
6911450535b7
merge -c1522 branches/stable-1.4: Fixed jace in jiffies timeout calculation.
Florian Pose <fp@igh-essen.com>
parents:
1252
diff
changeset
|
285 |
void ec_master_init_static(void); |
6911450535b7
merge -c1522 branches/stable-1.4: Fixed jace in jiffies timeout calculation.
Florian Pose <fp@igh-essen.com>
parents:
1252
diff
changeset
|
286 |
|
448
e4b76dc7910c
FIX: Introduced destroy() functions for kobject-derived classes and thus fixed memory leak.
Florian Pose <fp@igh-essen.com>
parents:
446
diff
changeset
|
287 |
// master creation/deletion |
997
652180478e95
Removed kobject from master and module. Sysfs is gone!
Florian Pose <fp@igh-essen.com>
parents:
992
diff
changeset
|
288 |
int ec_master_init(ec_master_t *, unsigned int, const uint8_t *, |
1399
f79d4bb5b23a
Added debug_level module parameter. debug_level is now unsigned int.
Florian Pose <fp@igh-essen.com>
parents:
1396
diff
changeset
|
289 |
const uint8_t *, dev_t, struct class *, unsigned int); |
639
aa23c48dca2d
Allow only MAC addresses as device identifiers; replaced master list by
Florian Pose <fp@igh-essen.com>
parents:
637
diff
changeset
|
290 |
void ec_master_clear(ec_master_t *); |
98
f564d0929292
MERGE branches/async 222:233 -> trunk (Kommando-Warteschlangen).
Florian Pose <fp@igh-essen.com>
parents:
95
diff
changeset
|
291 |
|
1029
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
292 |
// phase transitions |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
293 |
int ec_master_enter_idle_phase(ec_master_t *); |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
294 |
void ec_master_leave_idle_phase(ec_master_t *); |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
295 |
int ec_master_enter_operation_phase(ec_master_t *); |
61ffe5f22306
Renamed master 'mode' to 'phase'.
Florian Pose <fp@igh-essen.com>
parents:
1028
diff
changeset
|
296 |
void ec_master_leave_operation_phase(ec_master_t *); |
191 | 297 |
|
446 | 298 |
// datagram IO |
331
17f58fe99511
Renamed ec_master_receive() to ec_master_receive_datagrams().
Florian Pose <fp@igh-essen.com>
parents:
330
diff
changeset
|
299 |
void ec_master_receive_datagrams(ec_master_t *, const uint8_t *, size_t); |
293
14aeb79aa992
Renamed command structure to datagram.
Florian Pose <fp@igh-essen.com>
parents:
286
diff
changeset
|
300 |
void ec_master_queue_datagram(ec_master_t *, ec_datagram_t *); |
2018
6c05411fee9b
replaced injection_seq mechanism with fsm datagram queue
Martin Troxler <ch1010277@ch10pc446>
parents:
2001
diff
changeset
|
301 |
void ec_master_queue_request_fsm_datagram(ec_master_t *, ec_datagram_t *); |
6c05411fee9b
replaced injection_seq mechanism with fsm datagram queue
Martin Troxler <ch1010277@ch10pc446>
parents:
2001
diff
changeset
|
302 |
void ec_master_queue_fsm_datagram(ec_master_t *, ec_datagram_t *); |
6c05411fee9b
replaced injection_seq mechanism with fsm datagram queue
Martin Troxler <ch1010277@ch10pc446>
parents:
2001
diff
changeset
|
303 |
void ec_master_inject_fsm_datagrams(ec_master_t *); |
0 | 304 |
|
195
674071846ee3
Translated all comments and documentation to english language.
Florian Pose <fp@igh-essen.com>
parents:
191
diff
changeset
|
305 |
// misc. |
1930
59a50053ccc6
Made send_interval variable an unsigned int; fixed format specifiers for
Florian Pose <fp@igh-essen.com>
parents:
1925
diff
changeset
|
306 |
void ec_master_set_send_interval(ec_master_t *, unsigned int); |
1028
afdd4bdbb7ec
Removed configs_attached flag; changed return value of
Florian Pose <fp@igh-essen.com>
parents:
1013
diff
changeset
|
307 |
void ec_master_attach_slave_configs(ec_master_t *); |
927
ffb7d1876ce0
Introduced ec_master_find_slave().
Florian Pose <fp@igh-essen.com>
parents:
922
diff
changeset
|
308 |
ec_slave_t *ec_master_find_slave(ec_master_t *, uint16_t, uint16_t); |
1077
c95cd717b852
Added ec_master_find_slave_const().
Florian Pose <fp@igh-essen.com>
parents:
1075
diff
changeset
|
309 |
const ec_slave_t *ec_master_find_slave_const(const ec_master_t *, uint16_t, |
c95cd717b852
Added ec_master_find_slave_const().
Florian Pose <fp@igh-essen.com>
parents:
1075
diff
changeset
|
310 |
uint16_t); |
325
7833cf70c4f2
VERSION 1.1: New realtime interface, only state machines.
Florian Pose <fp@igh-essen.com>
parents:
306
diff
changeset
|
311 |
void ec_master_output_stats(ec_master_t *); |
715
f12ff7c08623
Added --enable-eoe conditional.
Florian Pose <fp@igh-essen.com>
parents:
664
diff
changeset
|
312 |
#ifdef EC_EOE |
661
bc1de1362efb
Dynamic creation of EoE handlers.
Florian Pose <fp@igh-essen.com>
parents:
656
diff
changeset
|
313 |
void ec_master_clear_eoe_handlers(ec_master_t *); |
715
f12ff7c08623
Added --enable-eoe conditional.
Florian Pose <fp@igh-essen.com>
parents:
664
diff
changeset
|
314 |
#endif |
992
50a44cbd30af
Removed kobjects from sdo and slave.
Florian Pose <fp@igh-essen.com>
parents:
990
diff
changeset
|
315 |
void ec_master_clear_slaves(ec_master_t *); |
325
7833cf70c4f2
VERSION 1.1: New realtime interface, only state machines.
Florian Pose <fp@igh-essen.com>
parents:
306
diff
changeset
|
316 |
|
990
4f223f3df05a
Bus configuration via 'ethercat config'.
Florian Pose <fp@igh-essen.com>
parents:
956
diff
changeset
|
317 |
unsigned int ec_master_config_count(const ec_master_t *); |
1252
0b411da5fd24
Added ec_master_get_config().
Florian Pose <fp@igh-essen.com>
parents:
1250
diff
changeset
|
318 |
ec_slave_config_t *ec_master_get_config( |
0b411da5fd24
Added ec_master_get_config().
Florian Pose <fp@igh-essen.com>
parents:
1250
diff
changeset
|
319 |
const ec_master_t *, unsigned int); |
990
4f223f3df05a
Bus configuration via 'ethercat config'.
Florian Pose <fp@igh-essen.com>
parents:
956
diff
changeset
|
320 |
const ec_slave_config_t *ec_master_get_config_const( |
4f223f3df05a
Bus configuration via 'ethercat config'.
Florian Pose <fp@igh-essen.com>
parents:
956
diff
changeset
|
321 |
const ec_master_t *, unsigned int); |
946
6ef20c5de875
Introduced ec_master_domain_count() and ec_master_find_domain().
Florian Pose <fp@igh-essen.com>
parents:
927
diff
changeset
|
322 |
unsigned int ec_master_domain_count(const ec_master_t *); |
6ef20c5de875
Introduced ec_master_domain_count() and ec_master_find_domain().
Florian Pose <fp@igh-essen.com>
parents:
927
diff
changeset
|
323 |
ec_domain_t *ec_master_find_domain(ec_master_t *, unsigned int); |
1078
fce58ba8a912
Added ec_master_find_domain_const().
Florian Pose <fp@igh-essen.com>
parents:
1077
diff
changeset
|
324 |
const ec_domain_t *ec_master_find_domain_const(const ec_master_t *, |
fce58ba8a912
Added ec_master_find_domain_const().
Florian Pose <fp@igh-essen.com>
parents:
1077
diff
changeset
|
325 |
unsigned int); |
1516
e3b09f847512
Fixed compiler error on --disable-eoe.
Florian Pose <fp@igh-essen.com>
parents:
1513
diff
changeset
|
326 |
#ifdef EC_EOE |
1485 | 327 |
uint16_t ec_master_eoe_handler_count(const ec_master_t *); |
328 |
const ec_eoe_t *ec_master_get_eoe_handler_const(const ec_master_t *, uint16_t); |
|
1516
e3b09f847512
Fixed compiler error on --disable-eoe.
Florian Pose <fp@igh-essen.com>
parents:
1513
diff
changeset
|
329 |
#endif |
946
6ef20c5de875
Introduced ec_master_domain_count() and ec_master_find_domain().
Florian Pose <fp@igh-essen.com>
parents:
927
diff
changeset
|
330 |
|
1399
f79d4bb5b23a
Added debug_level module parameter. debug_level is now unsigned int.
Florian Pose <fp@igh-essen.com>
parents:
1396
diff
changeset
|
331 |
int ec_master_debug_level(ec_master_t *, unsigned int); |
956
d9b9bc794d10
Implemented 'ethercat debug' command.
Florian Pose <fp@igh-essen.com>
parents:
946
diff
changeset
|
332 |
|
1312
74853e018898
Created backend versions of all API functions returing a pointer; using
Florian Pose <fp@igh-essen.com>
parents:
1279
diff
changeset
|
333 |
ec_domain_t *ecrt_master_create_domain_err(ec_master_t *); |
74853e018898
Created backend versions of all API functions returing a pointer; using
Florian Pose <fp@igh-essen.com>
parents:
1279
diff
changeset
|
334 |
ec_slave_config_t *ecrt_master_slave_config_err(ec_master_t *, uint16_t, |
74853e018898
Created backend versions of all API functions returing a pointer; using
Florian Pose <fp@igh-essen.com>
parents:
1279
diff
changeset
|
335 |
uint16_t, uint32_t, uint32_t); |
74853e018898
Created backend versions of all API functions returing a pointer; using
Florian Pose <fp@igh-essen.com>
parents:
1279
diff
changeset
|
336 |
|
1425
c1322a8793c0
Transition delay calculation. TBC...
Florian Pose <fp@igh-essen.com>
parents:
1421
diff
changeset
|
337 |
void ec_master_calc_dc(ec_master_t *); |
1925
29161abef052
Write DC system time offsets right after slave scan / config change. Wait for DC clock discipline.
Florian Pose <fp@igh-essen.com>
parents:
1921
diff
changeset
|
338 |
void ec_master_request_op(ec_master_t *); |
1425
c1322a8793c0
Transition delay calculation. TBC...
Florian Pose <fp@igh-essen.com>
parents:
1421
diff
changeset
|
339 |
|
2024
96e2ae6cce95
ecrt_master_callbacks: replaced send/receive callback mechanism with locking mechanism; removed ecrt_master_send_ext
Martin Troxler <ch1010277@ch10pc446>
parents:
2021
diff
changeset
|
340 |
/*****************************************************************************/ |
96e2ae6cce95
ecrt_master_callbacks: replaced send/receive callback mechanism with locking mechanism; removed ecrt_master_send_ext
Martin Troxler <ch1010277@ch10pc446>
parents:
2021
diff
changeset
|
341 |
|
96e2ae6cce95
ecrt_master_callbacks: replaced send/receive callback mechanism with locking mechanism; removed ecrt_master_send_ext
Martin Troxler <ch1010277@ch10pc446>
parents:
2021
diff
changeset
|
342 |
#endif |