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 *); |