equal
deleted
inserted
replaced
46 #include "datagram.h" |
46 #include "datagram.h" |
47 #include "slave.h" |
47 #include "slave.h" |
48 |
48 |
49 /*****************************************************************************/ |
49 /*****************************************************************************/ |
50 |
50 |
|
51 /** |
|
52 * SII access addressing mode. |
|
53 */ |
51 typedef enum |
54 typedef enum |
52 { |
55 { |
53 EC_FSM_SII_POSITION, |
56 EC_FSM_SII_POSITION, |
54 EC_FSM_SII_NODE |
57 EC_FSM_SII_NODE |
55 } |
58 } |
68 ec_slave_t *slave; /**< slave the FSM runs on */ |
71 ec_slave_t *slave; /**< slave the FSM runs on */ |
69 ec_datagram_t *datagram; /**< datagram used in the state machine */ |
72 ec_datagram_t *datagram; /**< datagram used in the state machine */ |
70 unsigned int retries; /**< retries upon datagram timeout */ |
73 unsigned int retries; /**< retries upon datagram timeout */ |
71 |
74 |
72 void (*state)(ec_fsm_sii_t *); /**< SII state function */ |
75 void (*state)(ec_fsm_sii_t *); /**< SII state function */ |
73 uint16_t offset; /**< input: offset in SII */ |
76 uint16_t word_offset; /**< input: word offset in SII */ |
74 ec_fsm_sii_addressing_t mode; /**< reading via APRD or NPRD */ |
77 ec_fsm_sii_addressing_t mode; /**< reading via APRD or NPRD */ |
75 uint8_t value[4]; /**< raw SII value (32bit) */ |
78 uint8_t value[4]; /**< raw SII value (32bit) */ |
76 cycles_t cycles_start; /**< start timestamp */ |
79 cycles_t cycles_start; /**< start timestamp */ |
77 uint8_t check_once_more; /**< one more try after timeout */ |
80 uint8_t check_once_more; /**< one more try after timeout */ |
78 }; |
81 }; |
83 void ec_fsm_sii_clear(ec_fsm_sii_t *); |
86 void ec_fsm_sii_clear(ec_fsm_sii_t *); |
84 |
87 |
85 void ec_fsm_sii_read(ec_fsm_sii_t *, ec_slave_t *, |
88 void ec_fsm_sii_read(ec_fsm_sii_t *, ec_slave_t *, |
86 uint16_t, ec_fsm_sii_addressing_t); |
89 uint16_t, ec_fsm_sii_addressing_t); |
87 void ec_fsm_sii_write(ec_fsm_sii_t *, ec_slave_t *, uint16_t, |
90 void ec_fsm_sii_write(ec_fsm_sii_t *, ec_slave_t *, uint16_t, |
88 const uint16_t *, ec_fsm_sii_addressing_t); |
91 const uint8_t *, ec_fsm_sii_addressing_t); |
89 |
92 |
90 int ec_fsm_sii_exec(ec_fsm_sii_t *); |
93 int ec_fsm_sii_exec(ec_fsm_sii_t *); |
91 int ec_fsm_sii_success(ec_fsm_sii_t *); |
94 int ec_fsm_sii_success(ec_fsm_sii_t *); |
92 |
95 |
93 /*****************************************************************************/ |
96 /*****************************************************************************/ |