master/fsm_sii.h
branchstable-1.3
changeset 1746 72e7507b3f1b
parent 1744 7bc131b92039
equal deleted inserted replaced
1745:07fd94c5119d 1746:72e7507b3f1b
    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 /*****************************************************************************/