author | Florian Pose <fp@igh-essen.com> |
Thu, 26 Jan 2006 13:41:47 +0000 | |
changeset 61 | cd014255f94f |
parent 54 | 7506e67dd122 |
permissions | -rw-r--r-- |
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
1 |
/****************************************************************************** |
0 | 2 |
* |
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
3 |
* c o m m a n d . c |
0 | 4 |
* |
5 |
* Methoden für ein EtherCAT-Kommando. |
|
6 |
* |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
7 |
* $Id$ |
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
8 |
* |
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
9 |
*****************************************************************************/ |
0 | 10 |
|
11 |
#include <linux/slab.h> |
|
12 |
||
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
13 |
#include "command.h" |
0 | 14 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
15 |
/*****************************************************************************/ |
0 | 16 |
|
17 |
/** |
|
18 |
Kommando-Konstruktor. |
|
19 |
||
20 |
Initialisiert alle Variablen innerhalb des Kommandos auf die |
|
21 |
Default-Werte. |
|
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
22 |
|
0 | 23 |
@param cmd Zeiger auf das zu initialisierende Kommando. |
24 |
*/ |
|
25 |
||
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
26 |
void ec_command_init(ec_command_t *cmd) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
27 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
28 |
cmd->type = EC_COMMAND_NONE; |
0 | 29 |
cmd->address.logical = 0x00000000; |
30 |
cmd->data_length = 0; |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
31 |
cmd->state = EC_COMMAND_STATE_READY; |
0 | 32 |
cmd->index = 0; |
33 |
cmd->working_counter = 0; |
|
34 |
} |
|
35 |
||
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
36 |
/*****************************************************************************/ |
0 | 37 |
|
38 |
/** |
|
39 |
Kommando-Destruktor. |
|
40 |
||
2
b0a7a4745bf9
?nderungen an no_rtai r110:110 in drivers gemergt.
Florian Pose <fp@igh-essen.com>
parents:
0
diff
changeset
|
41 |
Setzt alle Attribute auf den Anfangswert zurueck. |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
42 |
|
0 | 43 |
@param cmd Zeiger auf das zu initialisierende Kommando. |
44 |
*/ |
|
45 |
||
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
46 |
void ec_command_clear(ec_command_t *cmd) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
47 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
48 |
ec_command_init(cmd); |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
49 |
} |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
50 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
51 |
/*****************************************************************************/ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
52 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
53 |
#define EC_FUNC_HEADER \ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
54 |
ec_command_init(cmd) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
55 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
56 |
#define EC_FUNC_WRITE_FOOTER \ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
57 |
cmd->data_length = length; \ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
58 |
memcpy(cmd->data, data, length); |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
59 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
60 |
#define EC_FUNC_READ_FOOTER \ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
61 |
cmd->data_length = length; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
62 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
63 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
64 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
65 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
66 |
Initialisiert ein EtherCAT-NPRD-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
67 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
68 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
69 |
@param node_address Adresse des Knotens (Slaves) |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
70 |
@param offset Physikalische Speicheradresse im Slave |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
71 |
@param length Länge der zu lesenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
72 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
73 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
74 |
void ec_command_read(ec_command_t *cmd, unsigned short node_address, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
75 |
unsigned short offset, unsigned int length) |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
76 |
{ |
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
77 |
if (unlikely(node_address == 0x0000)) |
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
78 |
printk(KERN_WARNING "EtherCAT: Warning - Using node address 0x0000!\n"); |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
79 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
80 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
81 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
82 |
cmd->type = EC_COMMAND_NPRD; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
83 |
cmd->address.phy.dev.node = node_address; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
84 |
cmd->address.phy.mem = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
85 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
86 |
EC_FUNC_READ_FOOTER; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
87 |
} |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
88 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
89 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
90 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
91 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
92 |
Initialisiert ein EtherCAT-NPWR-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
93 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
94 |
Alloziert ein "node-adressed physical write"-Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
95 |
und fügt es in die Liste des Masters ein. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
96 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
97 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
98 |
@param node_address Adresse des Knotens (Slaves) |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
99 |
@param offset Physikalische Speicheradresse im Slave |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
100 |
@param length Länge der zu schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
101 |
@param data Zeiger auf Speicher mit zu schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
102 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
103 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
104 |
void ec_command_write(ec_command_t *cmd, unsigned short node_address, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
105 |
unsigned short offset, unsigned int length, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
106 |
const unsigned char *data) |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
107 |
{ |
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
108 |
if (unlikely(node_address == 0x0000)) |
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
109 |
printk(KERN_WARNING "EtherCAT: Warning - Using node address 0x0000!\n"); |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
110 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
111 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
112 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
113 |
cmd->type = EC_COMMAND_NPWR; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
114 |
cmd->address.phy.dev.node = node_address; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
115 |
cmd->address.phy.mem = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
116 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
117 |
EC_FUNC_WRITE_FOOTER; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
118 |
} |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
119 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
120 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
121 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
122 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
123 |
Initialisiert ein EtherCAT-APRD-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
124 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
125 |
Alloziert ein "autoincerement physical read"-Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
126 |
und fügt es in die Liste des Masters ein. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
127 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
128 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
129 |
@param ring_position (Negative) Position des Slaves im Bus |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
130 |
@param offset Physikalische Speicheradresse im Slave |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
131 |
@param length Länge der zu lesenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
132 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
133 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
134 |
void ec_command_position_read(ec_command_t *cmd, short ring_position, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
135 |
unsigned short offset, unsigned int length) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
136 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
137 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
138 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
139 |
cmd->type = EC_COMMAND_APRD; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
140 |
cmd->address.phy.dev.pos = ring_position; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
141 |
cmd->address.phy.mem = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
142 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
143 |
EC_FUNC_READ_FOOTER; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
144 |
} |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
145 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
146 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
147 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
148 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
149 |
Initialisiert ein EtherCAT-APWR-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
150 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
151 |
Alloziert ein "autoincrement physical write"-Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
152 |
und fügt es in die Liste des Masters ein. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
153 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
154 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
155 |
@param ring_position (Negative) Position des Slaves im Bus |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
156 |
@param offset Physikalische Speicheradresse im Slave |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
157 |
@param length Länge der zu schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
158 |
@param data Zeiger auf Speicher mit zu schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
159 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
160 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
161 |
void ec_command_position_write(ec_command_t *cmd, short ring_position, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
162 |
unsigned short offset, unsigned int length, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
163 |
const unsigned char *data) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
164 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
165 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
166 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
167 |
cmd->type = EC_COMMAND_APWR; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
168 |
cmd->address.phy.dev.pos = ring_position; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
169 |
cmd->address.phy.mem = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
170 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
171 |
EC_FUNC_WRITE_FOOTER; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
172 |
} |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
173 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
174 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
175 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
176 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
177 |
Initialisiert ein EtherCAT-BRD-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
178 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
179 |
Alloziert ein "broadcast read"-Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
180 |
und fügt es in die Liste des Masters ein. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
181 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
182 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
183 |
@param offset Physikalische Speicheradresse im Slave |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
184 |
@param length Länge der zu lesenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
185 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
186 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
187 |
void ec_command_broadcast_read(ec_command_t *cmd, unsigned short offset, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
188 |
unsigned int length) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
189 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
190 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
191 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
192 |
cmd->type = EC_COMMAND_BRD; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
193 |
cmd->address.phy.dev.node = 0x0000; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
194 |
cmd->address.phy.mem = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
195 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
196 |
EC_FUNC_READ_FOOTER; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
197 |
} |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
198 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
199 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
200 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
201 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
202 |
Initialisiert ein EtherCAT-BWR-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
203 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
204 |
Alloziert ein "broadcast write"-Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
205 |
und fügt es in die Liste des Masters ein. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
206 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
207 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
208 |
@param offset Physikalische Speicheradresse im Slave |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
209 |
@param length Länge der zu schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
210 |
@param data Zeiger auf Speicher mit zu schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
211 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
212 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
213 |
void ec_command_broadcast_write(ec_command_t *cmd, unsigned short offset, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
214 |
unsigned int length, const unsigned char *data) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
215 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
216 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
217 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
218 |
cmd->type = EC_COMMAND_BWR; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
219 |
cmd->address.phy.dev.node = 0x0000; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
220 |
cmd->address.phy.mem = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
221 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
222 |
EC_FUNC_WRITE_FOOTER; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
223 |
} |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
224 |
|
39
6965c23a6826
likely/unlikely, Fehlermeldungen in zyklischem Code begrenzt und Kommentare ge??ndert.
Florian Pose <fp@igh-essen.com>
parents:
26
diff
changeset
|
225 |
/*****************************************************************************/ |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
226 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
227 |
/** |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
228 |
Initialisiert ein EtherCAT-LRW-Kommando. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
229 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
230 |
Alloziert ein "logical read write"-Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
231 |
und fügt es in die Liste des Masters ein. |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
232 |
|
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
233 |
@param cmd Zeiger auf das Kommando |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
234 |
@param offset Logische Speicheradresse |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
235 |
@param length Länge der zu lesenden/schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
236 |
@param data Zeiger auf Speicher mit zu lesenden/schreibenden Daten |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
237 |
*/ |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
238 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
239 |
void ec_command_logical_read_write(ec_command_t *cmd, unsigned int offset, |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
240 |
unsigned int length, unsigned char *data) |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
241 |
{ |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
242 |
EC_FUNC_HEADER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
243 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
244 |
cmd->type = EC_COMMAND_LRW; |
13
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
245 |
cmd->address.logical = offset; |
db0742533c10
Simple Send/Receive Funktionen.
Florian Pose <fp@igh-essen.com>
parents:
2
diff
changeset
|
246 |
|
54
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
247 |
EC_FUNC_WRITE_FOOTER; |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
248 |
} |
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
249 |
|
7506e67dd122
Vereinheitlichte Schnittstellen, Include-Verzeichnis und Module getrennt.
Florian Pose <fp@igh-essen.com>
parents:
39
diff
changeset
|
250 |
/*****************************************************************************/ |