82 ec_datagram_state_t; |
82 ec_datagram_state_t; |
83 |
83 |
84 /*****************************************************************************/ |
84 /*****************************************************************************/ |
85 |
85 |
86 /** |
86 /** |
87 EtherCAT address. |
|
88 */ |
|
89 |
|
90 typedef union |
|
91 { |
|
92 /** |
|
93 * Physical address. |
|
94 */ |
|
95 struct |
|
96 { |
|
97 uint16_t slave; /**< configured or autoincrement address */ |
|
98 uint16_t mem; /**< physical memory address */ |
|
99 } |
|
100 physical; |
|
101 |
|
102 uint32_t logical; /**< logical address */ |
|
103 } |
|
104 ec_address_t; |
|
105 |
|
106 /*****************************************************************************/ |
|
107 |
|
108 /** |
|
109 EtherCAT datagram. |
87 EtherCAT datagram. |
110 */ |
88 */ |
111 |
89 |
112 typedef struct |
90 typedef struct |
113 { |
91 { |
114 struct list_head list; /**< needed by domain datagram lists */ |
92 struct list_head list; /**< needed by domain datagram lists */ |
115 struct list_head queue; /**< master datagram queue item */ |
93 struct list_head queue; /**< master datagram queue item */ |
116 struct list_head sent; /**< master list item for sent datagrams */ |
94 struct list_head sent; /**< master list item for sent datagrams */ |
117 ec_datagram_type_t type; /**< datagram type (APRD, BWR, etc) */ |
95 ec_datagram_type_t type; /**< datagram type (APRD, BWR, etc) */ |
118 ec_address_t address; /**< recipient address */ |
96 uint8_t address[EC_ADDR_LEN]; /**< recipient address */ |
119 uint8_t *data; /**< datagram data */ |
97 uint8_t *data; /**< datagram data */ |
120 size_t mem_size; /**< datagram \a data memory size */ |
98 size_t mem_size; /**< datagram \a data memory size */ |
121 size_t data_size; /**< size of the data in \a data */ |
99 size_t data_size; /**< size of the data in \a data */ |
122 uint8_t index; /**< datagram index (set by master) */ |
100 uint8_t index; /**< datagram index (set by master) */ |
123 uint16_t working_counter; /**< working counter */ |
101 uint16_t working_counter; /**< working counter */ |