equal
deleted
inserted
replaced
9 *****************************************************************************/ |
9 *****************************************************************************/ |
10 |
10 |
11 #ifndef _EC_TYPES_H_ |
11 #ifndef _EC_TYPES_H_ |
12 #define _EC_TYPES_H_ |
12 #define _EC_TYPES_H_ |
13 |
13 |
|
14 #include "../include/EtherCAT_rt.h" |
|
15 |
14 /*****************************************************************************/ |
16 /*****************************************************************************/ |
15 |
17 |
16 /** |
18 /** |
17 Typ eines EtherCAT-Slaves. |
19 Features eines EtherCAT-Slaves. |
18 |
20 |
19 Dieser Typ muss für die Konfiguration bekannt sein. Der |
21 Diese Angabe muss für die Konfiguration bekannt sein. Der |
20 Master entscheidet danach, ober bspw. Mailboxes konfigurieren, |
22 Master entscheidet danach, ober bspw. Mailboxes konfigurieren, |
21 oder Sync-Manager setzen soll. |
23 oder Sync-Manager setzen soll. |
22 */ |
24 */ |
23 |
25 |
24 typedef enum |
26 typedef enum |
25 { |
27 { |
26 EC_SIMPLE_SLAVE, EC_MAILBOX_SLAVE, EC_NOSYNC_SLAVE |
28 EC_SIMPLE_SLAVE, EC_MAILBOX_SLAVE, EC_NOSYNC_SLAVE |
27 } |
29 } |
28 ec_slave_type_t; |
30 ec_slave_features_t; |
29 |
31 |
30 /*****************************************************************************/ |
32 /*****************************************************************************/ |
31 |
33 |
32 /** |
34 /** |
33 Beschreibung eines EtherCAT-Slave-Typs. |
35 Beschreibung eines EtherCAT-Slave-Typs. |
35 Diese Beschreibung dient zur Konfiguration einer bestimmten |
37 Diese Beschreibung dient zur Konfiguration einer bestimmten |
36 Slave-Art. Sie enthält die Konfigurationsdaten für die |
38 Slave-Art. Sie enthält die Konfigurationsdaten für die |
37 Slave-internen Sync-Manager und FMMU's. |
39 Slave-internen Sync-Manager und FMMU's. |
38 */ |
40 */ |
39 |
41 |
40 typedef struct slave_desc |
42 struct ec_slave_type |
41 { |
43 { |
42 const char *vendor_name; /**< Name des Herstellers */ |
44 const char *vendor_name; /**< Name des Herstellers */ |
43 const char *product_name; /**< Name des Slaves-Typs */ |
45 const char *product_name; /**< Name des Slaves-Typs */ |
44 const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */ |
46 const char *product_desc; /**< Genauere Beschreibung des Slave-Typs */ |
45 |
47 |
46 const ec_slave_type_t type; /**< Art des Slave-Typs */ |
48 ec_slave_features_t features; /**< Features des Slave-Typs */ |
47 |
49 |
48 const unsigned char *sm0; /**< Konfigurationsdaten des |
50 const unsigned char *sm0; /**< Konfigurationsdaten des |
49 ersten Sync-Managers */ |
51 ersten Sync-Managers */ |
50 const unsigned char *sm1; /**< Konfigurationsdaten des |
52 const unsigned char *sm1; /**< Konfigurationsdaten des |
51 zweiten Sync-Managers */ |
53 zweiten Sync-Managers */ |
55 vierten Sync-Managers */ |
57 vierten Sync-Managers */ |
56 |
58 |
57 const unsigned char *fmmu0; /**< Konfigurationsdaten |
59 const unsigned char *fmmu0; /**< Konfigurationsdaten |
58 der ersten FMMU */ |
60 der ersten FMMU */ |
59 |
61 |
60 const unsigned int process_data_size; /**< Länge der Prozessdaten in Bytes */ |
62 unsigned int process_data_size; /**< Länge der Prozessdaten in Bytes */ |
61 const unsigned int channel_count; /**< Anzahl der Kanäle */ |
63 }; |
62 |
|
63 int (*read) (unsigned char *, unsigned int); /**< Funktion zum Dekodieren |
|
64 und Lesen der Kanaldaten */ |
|
65 void (*write) (unsigned char *, unsigned int, int); /**< Funktion zum |
|
66 Kodieren und Schreiben |
|
67 der Kanaldaten */ |
|
68 } |
|
69 ec_slave_desc_t; |
|
70 |
64 |
71 /*****************************************************************************/ |
65 /*****************************************************************************/ |
72 |
66 |
73 /** |
67 /** |
74 Identifikation eines Slave-Typs. |
68 Identifikation eines Slave-Typs. |
77 Produktcodes zu den einzelnen Slave-Typen verwendet. |
71 Produktcodes zu den einzelnen Slave-Typen verwendet. |
78 */ |
72 */ |
79 |
73 |
80 typedef struct slave_ident |
74 typedef struct slave_ident |
81 { |
75 { |
82 const unsigned int vendor_id; /**< Hersteller-Code */ |
76 unsigned int vendor_id; /**< Hersteller-Code */ |
83 const unsigned int product_code; /**< Herstellerspezifischer Produktcode */ |
77 unsigned int product_code; /**< Herstellerspezifischer Produktcode */ |
84 const ec_slave_desc_t *desc; /**< Zeiger auf den dazugehörigen |
78 const ec_slave_type_t *type; /**< Zeiger auf den entsprechenden Slave-Typ */ |
85 Slave-Typ */ |
|
86 } |
79 } |
87 ec_slave_ident_t; |
80 ec_slave_ident_t; |
88 |
81 |
89 extern ec_slave_ident_t slave_idents[]; /**< Statisches Array der |
82 extern ec_slave_ident_t slave_idents[]; /**< Statisches Array der |
90 Slave-Identifikationen */ |
83 Slave-Identifikationen */ |