equal
deleted
inserted
replaced
14 #include "globals.h" |
14 #include "globals.h" |
15 #include "../include/EtherCAT_rt.h" |
15 #include "../include/EtherCAT_rt.h" |
16 |
16 |
17 /*****************************************************************************/ |
17 /*****************************************************************************/ |
18 |
18 |
19 #define EC_MAX_DATA_SIZE (EC_MAX_FRAME_SIZE - EC_FRAME_HEADER_SIZE \ |
|
20 - EC_COMMAND_HEADER_SIZE \ |
|
21 - EC_COMMAND_FOOTER_SIZE) |
|
22 |
|
23 /*****************************************************************************/ |
|
24 |
|
25 /** |
|
26 Status eines EtherCAT-Rahmens. |
|
27 */ |
|
28 |
|
29 typedef enum { |
|
30 ec_frame_ready, ec_frame_sent, ec_frame_received |
|
31 } |
|
32 ec_frame_state_t; |
|
33 |
|
34 /*****************************************************************************/ |
|
35 |
|
36 /** |
19 /** |
37 EtherCAT-Rahmen-Typ |
20 EtherCAT-Rahmen-Typ |
38 */ |
21 */ |
39 |
22 |
40 typedef enum |
23 typedef enum |
42 ec_frame_type_none = 0x00, /**< Dummy */ |
25 ec_frame_type_none = 0x00, /**< Dummy */ |
43 ec_frame_type_aprd = 0x01, /**< Auto-increment physical read */ |
26 ec_frame_type_aprd = 0x01, /**< Auto-increment physical read */ |
44 ec_frame_type_apwr = 0x02, /**< Auto-increment physical write */ |
27 ec_frame_type_apwr = 0x02, /**< Auto-increment physical write */ |
45 ec_frame_type_nprd = 0x04, /**< Node-addressed physical read */ |
28 ec_frame_type_nprd = 0x04, /**< Node-addressed physical read */ |
46 ec_frame_type_npwr = 0x05, /**< Node-addressed physical write */ |
29 ec_frame_type_npwr = 0x05, /**< Node-addressed physical write */ |
47 ec_frame_type_brd = 0x07, /**< Broadcast read */ |
30 ec_frame_type_brd = 0x07, /**< Broadcast read */ |
48 ec_frame_type_bwr = 0x08, /**< Broadcast write */ |
31 ec_frame_type_bwr = 0x08, /**< Broadcast write */ |
49 ec_frame_type_lrw = 0x0C /**< Logical read/write */ |
32 ec_frame_type_lrw = 0x0C /**< Logical read/write */ |
50 } |
33 } |
51 ec_frame_type_t; |
34 ec_frame_type_t; |
52 |
35 |
53 /*****************************************************************************/ |
36 /*****************************************************************************/ |
54 |
37 |
88 ec_master_t *master; /**< EtherCAT-Master */ |
71 ec_master_t *master; /**< EtherCAT-Master */ |
89 ec_frame_type_t type; /**< Typ des Frames (APRD, NPWR, etc) */ |
72 ec_frame_type_t type; /**< Typ des Frames (APRD, NPWR, etc) */ |
90 ec_address_t address; /**< Adresse des/der Empfänger */ |
73 ec_address_t address; /**< Adresse des/der Empfänger */ |
91 unsigned int data_length; /**< Länge der zu sendenden und/oder empfangenen |
74 unsigned int data_length; /**< Länge der zu sendenden und/oder empfangenen |
92 Daten */ |
75 Daten */ |
93 ec_frame_state_t state; /**< Zustand des Kommandos */ |
|
94 uint8_t index; /**< Kommando-Index, mit dem der Frame gesendet wurde |
76 uint8_t index; /**< Kommando-Index, mit dem der Frame gesendet wurde |
95 (wird vom Master beim Senden gesetzt). */ |
77 (wird vom Master beim Senden gesetzt). */ |
96 uint16_t working_counter; /**< Working-Counter */ |
78 uint16_t working_counter; /**< Working-Counter */ |
97 uint8_t data[EC_MAX_FRAME_SIZE]; /**< Rahmendaten */ |
79 uint8_t data[EC_MAX_FRAME_SIZE]; /**< Rahmendaten */ |
98 } |
80 } |