48 |
48 |
49 /** Finite state machines for the Sercos over EtherCAT protocol. |
49 /** Finite state machines for the Sercos over EtherCAT protocol. |
50 */ |
50 */ |
51 struct ec_fsm_soe { |
51 struct ec_fsm_soe { |
52 ec_slave_t *slave; /**< slave the FSM runs on */ |
52 ec_slave_t *slave; /**< slave the FSM runs on */ |
53 ec_mailbox_t *mbox; /**< mailbox used in the state machine */ |
|
54 unsigned int retries; /**< retries upon datagram timeout */ |
53 unsigned int retries; /**< retries upon datagram timeout */ |
55 |
54 |
56 void (*state)(ec_fsm_soe_t *); /**< CoE state function */ |
55 void (*state)(ec_fsm_soe_t *, ec_datagram_t *); /**< CoE state function */ |
57 unsigned long jiffies_start; /**< CoE timestamp. */ |
56 ec_datagram_t *datagram; /**< Datagram used in the previous step. */ |
|
57 unsigned long jiffies_start; /**< Timestamp. */ |
58 ec_soe_request_t *request; /**< SoE request */ |
58 ec_soe_request_t *request; /**< SoE request */ |
59 off_t offset; /**< IDN data offset during fragmented write. */ |
59 off_t offset; /**< IDN data offset during fragmented write. */ |
|
60 size_t fragment_size; /**< Size of the current fragment. */ |
60 }; |
61 }; |
61 |
62 |
62 /*****************************************************************************/ |
63 /*****************************************************************************/ |
63 |
64 |
64 void ec_fsm_soe_init(ec_fsm_soe_t *, ec_mailbox_t *); |
65 void ec_fsm_soe_init(ec_fsm_soe_t *); |
65 void ec_fsm_soe_clear(ec_fsm_soe_t *); |
66 void ec_fsm_soe_clear(ec_fsm_soe_t *); |
66 |
67 |
67 void ec_fsm_soe_transfer(ec_fsm_soe_t *, ec_slave_t *, ec_soe_request_t *); |
68 void ec_fsm_soe_transfer(ec_fsm_soe_t *, ec_slave_t *, ec_soe_request_t *); |
68 |
69 |
69 int ec_fsm_soe_exec(ec_fsm_soe_t *); |
70 int ec_fsm_soe_exec(ec_fsm_soe_t *, ec_datagram_t *); |
70 int ec_fsm_soe_success(ec_fsm_soe_t *); |
71 int ec_fsm_soe_success(const ec_fsm_soe_t *); |
71 |
72 |
72 /*****************************************************************************/ |
73 /*****************************************************************************/ |
73 |
74 |
74 #endif |
75 #endif |