43 |
43 |
44 /*****************************************************************************/ |
44 /*****************************************************************************/ |
45 |
45 |
46 typedef struct ec_fsm_coe ec_fsm_coe_t; /**< \see ec_fsm_coe */ |
46 typedef struct ec_fsm_coe ec_fsm_coe_t; /**< \see ec_fsm_coe */ |
47 |
47 |
48 /** Finite state machines for the CANopen-over-EtherCAT protocol. |
48 /** Finite state machines for the CANopen over EtherCAT protocol. |
49 */ |
49 */ |
50 struct ec_fsm_coe { |
50 struct ec_fsm_coe { |
51 ec_slave_t *slave; /**< slave the FSM runs on */ |
51 ec_slave_t *slave; /**< slave the FSM runs on */ |
52 ec_datagram_t *datagram; /**< datagram used in the state machine */ |
52 ec_datagram_t *datagram; /**< datagram used in the state machine */ |
53 unsigned int retries; /**< retries upon datagram timeout */ |
53 unsigned int retries; /**< retries upon datagram timeout */ |
54 |
54 |
55 void (*state)(ec_fsm_coe_t *); /**< CoE state function */ |
55 void (*state)(ec_fsm_coe_t *); /**< CoE state function */ |
56 unsigned long jiffies_start; /**< CoE timestamp. */ |
56 unsigned long jiffies_start; /**< CoE timestamp. */ |
57 ec_sdo_t *sdo; /**< current Sdo */ |
57 ec_sdo_t *sdo; /**< current SDO */ |
58 uint8_t subindex; /**< current subindex */ |
58 uint8_t subindex; /**< current subindex */ |
59 ec_sdo_request_t *request; /**< Sdo request */ |
59 ec_sdo_request_t *request; /**< SDO request */ |
60 uint8_t toggle; /**< toggle bit for segment commands */ |
60 uint8_t toggle; /**< toggle bit for segment commands */ |
61 }; |
61 }; |
62 |
62 |
63 /*****************************************************************************/ |
63 /*****************************************************************************/ |
64 |
64 |