master/fsm_soe.h
branchstable-1.5
changeset 2498 9cdd7669dc0b
parent 1865 c6c8b457bb40
equal deleted inserted replaced
2497:505cf41488a4 2498:9cdd7669dc0b
    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_datagram_t *datagram; /**< datagram 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_datagram_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