40 #include "datagram.h" |
40 #include "datagram.h" |
41 #include "sdo_request.h" |
41 #include "sdo_request.h" |
42 #include "fsm_coe.h" |
42 #include "fsm_coe.h" |
43 #include "fsm_foe.h" |
43 #include "fsm_foe.h" |
44 #include "fsm_soe.h" |
44 #include "fsm_soe.h" |
|
45 #include "fsm_master.h" |
45 |
46 |
46 typedef struct ec_fsm_slave ec_fsm_slave_t; /**< \see ec_fsm_slave */ |
47 typedef struct ec_fsm_slave ec_fsm_slave_t; /**< \see ec_fsm_slave */ |
47 |
48 |
48 /** Finite state machine of an EtherCAT slave. |
49 /** Finite state machine of an EtherCAT slave. |
49 */ |
50 */ |
50 struct ec_fsm_slave { |
51 struct ec_fsm_slave { |
51 ec_slave_t *slave; /**< slave the FSM runs on */ |
52 ec_slave_t *slave; /**< slave the FSM runs on */ |
52 ec_datagram_t *datagram; /**< datagram used in the state machine */ |
53 ec_mailbox_t *mbox; /**< mailbox used in the state machine */ |
53 |
54 |
54 void (*state)(ec_fsm_slave_t *); /**< master state function */ |
55 void (*state)(ec_fsm_slave_t *); /**< master state function */ |
55 ec_sdo_request_t *sdo_request; /**< SDO request to process. */ |
56 ec_master_sdo_request_t *sdo_request; /**< SDO request to process. */ |
56 ec_foe_request_t *foe_request; /**< FoE request to process. */ |
57 ec_master_foe_request_t *foe_request; /**< FoE request to process. */ |
57 off_t foe_index; /**< index to FoE write request data */ |
58 off_t foe_index; /**< index to FoE write request data */ |
58 ec_soe_request_t *soe_request; /**< SoE request to process. */ |
59 ec_master_soe_request_t *soe_request; /**< SoE request to process. */ |
59 |
60 |
60 ec_fsm_coe_t fsm_coe; /**< CoE state machine */ |
61 ec_fsm_coe_t fsm_coe; /**< CoE state machine */ |
61 ec_fsm_foe_t fsm_foe; /**< FoE state machine */ |
62 ec_fsm_foe_t fsm_foe; /**< FoE state machine */ |
62 ec_fsm_soe_t fsm_soe; /**< SoE state machine */ |
63 ec_fsm_soe_t fsm_soe; /**< SoE state machine */ |
63 }; |
64 }; |
64 |
65 |
65 /*****************************************************************************/ |
66 /*****************************************************************************/ |
66 |
67 |
67 void ec_fsm_slave_init(ec_fsm_slave_t *, ec_slave_t *, ec_datagram_t *); |
68 void ec_fsm_slave_init(ec_fsm_slave_t *, ec_slave_t *, ec_mailbox_t *); |
68 void ec_fsm_slave_clear(ec_fsm_slave_t *); |
69 void ec_fsm_slave_clear(ec_fsm_slave_t *); |
69 |
70 |
70 void ec_fsm_slave_exec(ec_fsm_slave_t *); |
71 int ec_fsm_slave_exec(ec_fsm_slave_t *); |
71 void ec_fsm_slave_ready(ec_fsm_slave_t *); |
72 void ec_fsm_slave_ready(ec_fsm_slave_t *); |
72 |
73 |
73 /*****************************************************************************/ |
74 /*****************************************************************************/ |
74 |
75 |
75 |
76 |