|
IgH EtherCAT Master
1.7.0
|
Mailbox functionality. More...
Go to the source code of this file.
Functions | |
| void | ec_mbox_data_init (ec_mbox_data_t *mbox_data) |
| Initialize mailbox response data. More... | |
| void | ec_mbox_data_clear (ec_mbox_data_t *mbox_data) |
| Free internal memory for mailbox response data. More... | |
| static int | ec_mbox_data_prealloc (ec_mbox_data_t *mbox_data, size_t size) |
| Allocates internal memory for mailbox response data. More... | |
| void | ec_slave_mbox_prealloc (ec_slave_t *slave) |
| Allocates the mailbox response buffers of a slave. More... | |
| uint8_t * | ec_slave_mbox_prepare_send (const ec_slave_t *slave, ec_datagram_t *datagram, uint8_t type, size_t size) |
| Prepares a mailbox-send datagram. More... | |
| int | ec_slave_mbox_prepare_check (const ec_slave_t *slave, ec_datagram_t *datagram) |
| Prepares a datagram for checking the mailbox state. More... | |
| int | ec_slave_mbox_check (const ec_datagram_t *datagram) |
| Processes a mailbox state checking datagram. More... | |
| int | ec_slave_mbox_prepare_fetch (const ec_slave_t *slave, ec_datagram_t *datagram) |
| Prepares a datagram to fetch mailbox data. More... | |
| void | ec_slave_mbox_take_error (ec_mbox_data_t *mbox_data, const ec_datagram_t *datagram) |
| Takes over a mailbox error response from a mailbox fetch datagram. More... | |
| uint8_t * | ec_slave_mbox_fetch (const ec_slave_t *slave, ec_mbox_data_t *response_data, uint8_t *type, size_t *size) |
| Processes received mailbox data. More... | |
Variables | |
| const ec_code_msg_t | mbox_error_messages [] |
| Mailbox error codes. More... | |
Mailbox functionality.
Definition in file mailbox.c.
| void ec_mbox_data_init | ( | ec_mbox_data_t * | mbox_data | ) |
| void ec_mbox_data_clear | ( | ec_mbox_data_t * | mbox_data | ) |
|
static |
| void ec_slave_mbox_prealloc | ( | ec_slave_t * | slave | ) |
Allocates the mailbox response buffers of a slave.
The buffers are allocated for the mailbox protocols supported by the slave. They are allocated only once and freed with the slave, because the receive path may write to them at any time. So they are dimensioned for the largest TX mailbox, that can be configured during the lifetime of the slave object (standard and bootstrap mailbox, sync manager configuration from the SII and the currently configured mailbox).
| slave | EtherCAT slave. |
| uint8_t* ec_slave_mbox_prepare_send | ( | const ec_slave_t * | slave, |
| ec_datagram_t * | datagram, | ||
| uint8_t | type, | ||
| size_t | size | ||
| ) |
| int ec_slave_mbox_prepare_check | ( | const ec_slave_t * | slave, |
| ec_datagram_t * | datagram | ||
| ) |
| int ec_slave_mbox_check | ( | const ec_datagram_t * | datagram | ) |
| int ec_slave_mbox_prepare_fetch | ( | const ec_slave_t * | slave, |
| ec_datagram_t * | datagram | ||
| ) |
| void ec_slave_mbox_take_error | ( | ec_mbox_data_t * | mbox_data, |
| const ec_datagram_t * | datagram | ||
| ) |
Takes over a mailbox error response from a mailbox fetch datagram.
Mailbox error responses (type 0x00) can not be assigned to a protocol, so the mailbox dispatcher leaves them in the memory of the fetch datagram. This function stores such a response in the protocol buffer of the fetching state machine, so that ec_slave_mbox_fetch() reports the error.
The fetch datagram is zeroed in ec_slave_mbox_prepare_fetch(), so the length field is zero, if the response was dispatched to a protocol buffer.
| mbox_data | protocol buffer of the fetching FSM |
| datagram | mailbox fetch datagram |
| uint8_t* ec_slave_mbox_fetch | ( | const ec_slave_t * | slave, |
| ec_mbox_data_t * | response_data, | ||
| uint8_t * | type, | ||
| size_t * | size | ||
| ) |
Processes received mailbox data.
The response is consumed, i. e. the response buffer is marked as empty.
| slave | slave |
| response_data | response |
| type | expected mailbox protocol |
| size | size of the received data |
| const ec_code_msg_t mbox_error_messages[] |
Mailbox error codes.