master/fsm_master.h
branch1.4-foe
changeset 1707 11ec009e145d
parent 1686 e206f4485f60
equal deleted inserted replaced
1706:c55ebaa206f8 1707:11ec009e145d
    36 
    36 
    37 #include "../include/ecrt.h"
    37 #include "../include/ecrt.h"
    38 
    38 
    39 #include "globals.h"
    39 #include "globals.h"
    40 #include "datagram.h"
    40 #include "datagram.h"
       
    41 #include "foe_request.h"
    41 #include "sdo_request.h"
    42 #include "sdo_request.h"
    42 #include "fsm_slave_config.h"
    43 #include "fsm_slave_config.h"
    43 #include "fsm_slave_scan.h"
    44 #include "fsm_slave_scan.h"
    44 #include "fsm_pdo.h"
    45 #include "fsm_pdo.h"
       
    46 #include "fsm_foe.h"
    45 
    47 
    46 /*****************************************************************************/
    48 /*****************************************************************************/
    47 
    49 
    48 /** SII write request.
    50 /** SII write request.
    49  */
    51  */
    66     ec_sdo_request_t req; /**< SDO request. */
    68     ec_sdo_request_t req; /**< SDO request. */
    67 } ec_master_sdo_request_t;
    69 } ec_master_sdo_request_t;
    68 
    70 
    69 /*****************************************************************************/
    71 /*****************************************************************************/
    70 
    72 
       
    73 /** FoE write request.
       
    74  */
       
    75 typedef struct {
       
    76     struct list_head list; /**< List head. */
       
    77     ec_slave_t *slave; /**< EtherCAT slave. */
       
    78     ec_foe_request_t req; /**< FoE request. */
       
    79 } ec_master_foe_request_t;
       
    80 
       
    81 /*****************************************************************************/
       
    82 
    71 typedef struct ec_fsm_master ec_fsm_master_t; /**< \see ec_fsm_master */
    83 typedef struct ec_fsm_master ec_fsm_master_t; /**< \see ec_fsm_master */
    72 
    84 
    73 /** Finite state machine of an EtherCAT master.
    85 /** Finite state machine of an EtherCAT master.
    74  */
    86  */
    75 struct ec_fsm_master {
    87 struct ec_fsm_master {
    85     ec_slave_state_t slave_states; /**< states of responding slaves */
    97     ec_slave_state_t slave_states; /**< states of responding slaves */
    86     ec_slave_t *slave; /**< current slave */
    98     ec_slave_t *slave; /**< current slave */
    87     ec_sii_write_request_t *sii_request; /**< SII write request */
    99     ec_sii_write_request_t *sii_request; /**< SII write request */
    88     off_t sii_index; /**< index to SII write request data */
   100     off_t sii_index; /**< index to SII write request data */
    89     ec_sdo_request_t *sdo_request; /**< SDO request to process. */
   101     ec_sdo_request_t *sdo_request; /**< SDO request to process. */
       
   102     ec_foe_request_t *foe_request; /**< FoE request to process. */
       
   103     off_t foe_index; /**< index to FoE write request data */
    90 
   104 
    91     ec_fsm_coe_t fsm_coe; /**< CoE state machine */
   105     ec_fsm_coe_t fsm_coe; /**< CoE state machine */
    92     ec_fsm_pdo_t fsm_pdo; /**< PDO configuration state machine. */
   106     ec_fsm_pdo_t fsm_pdo; /**< PDO configuration state machine. */
    93     ec_fsm_change_t fsm_change; /**< State change state machine */
   107     ec_fsm_change_t fsm_change; /**< State change state machine */
    94     ec_fsm_slave_config_t fsm_slave_config; /**< slave state machine */
   108     ec_fsm_slave_config_t fsm_slave_config; /**< slave state machine */
    95     ec_fsm_slave_scan_t fsm_slave_scan; /**< slave state machine */
   109     ec_fsm_slave_scan_t fsm_slave_scan; /**< slave state machine */
    96     ec_fsm_sii_t fsm_sii; /**< SII state machine */
   110     ec_fsm_sii_t fsm_sii; /**< SII state machine */
       
   111     ec_fsm_foe_t fsm_foe; /**< FoE state machine */
    97 };
   112 };
    98 
   113 
    99 /*****************************************************************************/
   114 /*****************************************************************************/
   100 
   115 
   101 void ec_fsm_master_init(ec_fsm_master_t *, ec_master_t *, ec_datagram_t *);
   116 void ec_fsm_master_init(ec_fsm_master_t *, ec_master_t *, ec_datagram_t *);