84 |
84 |
85 /** EtherCAT datagram. |
85 /** EtherCAT datagram. |
86 */ |
86 */ |
87 typedef struct { |
87 typedef struct { |
88 struct list_head list; /**< Needed by domain datagram lists. */ |
88 struct list_head list; /**< Needed by domain datagram lists. */ |
89 struct list_head queue; /**< Master datagram queue item. */ |
89 struct list_head queue; /**< Master datagram send-receive queue item. */ |
|
90 struct list_head fsm_queue; /**< Master datagram fsm queue item. */ |
90 struct list_head sent; /**< Master list item for sent datagrams. */ |
91 struct list_head sent; /**< Master list item for sent datagrams. */ |
91 ec_datagram_type_t type; /**< Datagram type (APRD, BWR, etc.). */ |
92 ec_datagram_type_t type; /**< Datagram type (APRD, BWR, etc.). */ |
92 uint8_t address[EC_ADDR_LEN]; /**< Recipient address. */ |
93 uint8_t address[EC_ADDR_LEN]; /**< Recipient address. */ |
93 uint8_t *data; /**< Datagram payload. */ |
94 uint8_t *data; /**< Datagram payload. */ |
94 ec_origin_t data_origin; /**< Origin of the \a data memory. */ |
95 ec_origin_t data_origin; /**< Origin of the \a data memory. */ |
95 size_t mem_size; /**< Datagram \a data memory size. */ |
96 size_t mem_size; /**< Datagram \a data memory size. */ |
96 size_t data_size; /**< Size of the data in \a data. */ |
97 size_t data_size; /**< Size of the data in \a data. */ |
|
98 ec_domain_t *domain; /**< Owning domain (may be null for non-domain datagrams) */ |
97 uint8_t index; /**< Index (set by master). */ |
99 uint8_t index; /**< Index (set by master). */ |
98 uint16_t working_counter; /**< Working counter. */ |
100 uint16_t working_counter; /**< Working counter. */ |
99 ec_datagram_state_t state; /**< State. */ |
101 ec_datagram_state_t state; /**< State. */ |
100 #ifdef EC_HAVE_CYCLES |
102 #ifdef EC_HAVE_CYCLES |
101 cycles_t cycles_sent; /**< Time, when the datagram was sent. */ |
103 cycles_t cycles_sent; /**< Time, when the datagram was sent. */ |