diff -r af21f0bdc7c9 -r 2b9c78543663 master/mailbox.h --- a/master/mailbox.h Thu Sep 06 14:21:02 2012 +0200 +++ b/master/mailbox.h Mon Nov 03 15:20:05 2014 +0100 @@ -37,8 +37,7 @@ #ifndef __EC_MAILBOX_H__ #define __EC_MAILBOX_H__ -#include "globals.h" -#include "datagram.h" +#include "slave.h" /*****************************************************************************/ @@ -48,63 +47,12 @@ /*****************************************************************************/ -/** EtherCAT slave mailbox. - */ -struct ec_mailbox -{ - ec_datagram_t *datagram; /**< Datagram used for the mailbox content. */ -#ifdef EC_REDUCE_MBOXFRAMESIZE - ec_datagram_t end_datagram; /**< Datagram used for writing the end byte to - the mailbox. */ -#endif -}; -typedef struct ec_mailbox ec_mailbox_t; /**< \see ec_mailbox. */ - -/*****************************************************************************/ - -void ec_mbox_init(ec_mailbox_t *, ec_datagram_t *); -void ec_mbox_clear(ec_mailbox_t *); - -/** - Checks the datagrams states. -*/ -static inline int ec_mbox_is_datagram_state( - ec_mailbox_t *mbox, - ec_datagram_state_t state - ) -{ - return (mbox->datagram->state == state) -#ifdef EC_REDUCE_MBOXFRAMESIZE - && (mbox->end_datagram.type == EC_DATAGRAM_NONE - || mbox->end_datagram.state == state) -#endif - ; -} - -/** - Checks the datagrams working counter. -*/ -static inline int ec_mbox_is_datagram_wc( - ec_mailbox_t *mbox, - size_t wc - ) -{ - return (mbox->datagram->working_counter == wc) -#ifdef EC_REDUCE_MBOXFRAMESIZE - && (mbox->end_datagram.type == EC_DATAGRAM_NONE - || mbox->end_datagram.working_counter == wc) -#endif - ; -} - -void ec_slave_mbox_queue_datagrams(const ec_slave_t *, ec_mailbox_t *); -void ec_master_mbox_queue_datagrams(ec_master_t *, ec_mailbox_t *); -uint8_t *ec_slave_mbox_prepare_send(const ec_slave_t *, ec_mailbox_t *, +uint8_t *ec_slave_mbox_prepare_send(const ec_slave_t *, ec_datagram_t *, uint8_t, size_t); -int ec_slave_mbox_prepare_check(const ec_slave_t *, ec_mailbox_t *); -int ec_slave_mbox_check(ec_mailbox_t *); -int ec_slave_mbox_prepare_fetch(const ec_slave_t *, ec_mailbox_t *); -uint8_t *ec_slave_mbox_fetch(const ec_slave_t *, ec_mailbox_t *, +int ec_slave_mbox_prepare_check(const ec_slave_t *, ec_datagram_t *); +int ec_slave_mbox_check(const ec_datagram_t *); +int ec_slave_mbox_prepare_fetch(const ec_slave_t *, ec_datagram_t *); +uint8_t *ec_slave_mbox_fetch(const ec_slave_t *, const ec_datagram_t *, uint8_t *, size_t *); /*****************************************************************************/