equal
deleted
inserted
replaced
108 if (slave->master->debug_level >= level) { \ |
108 if (slave->master->debug_level >= level) { \ |
109 printk(KERN_DEBUG "EtherCAT DEBUG %u-%u: " fmt, \ |
109 printk(KERN_DEBUG "EtherCAT DEBUG %u-%u: " fmt, \ |
110 slave->master->index, slave->ring_position, ##args); \ |
110 slave->master->index, slave->ring_position, ##args); \ |
111 } \ |
111 } \ |
112 } while (0) |
112 } while (0) |
|
113 |
|
114 /*****************************************************************************/ |
|
115 |
|
116 #ifdef EC_LOOP_CONTROL |
|
117 |
|
118 /** Slave port state. |
|
119 */ |
|
120 typedef enum { |
|
121 EC_SLAVE_PORT_DOWN, |
|
122 EC_SLAVE_PORT_WAIT, |
|
123 EC_SLAVE_PORT_UP |
|
124 } ec_slave_port_state_t; |
|
125 |
|
126 /** Wait time in [ms] from detecting a link to opening a port. |
|
127 */ |
|
128 #define EC_PORT_WAIT_MS 2000 |
|
129 |
|
130 #endif |
113 |
131 |
114 /*****************************************************************************/ |
132 /*****************************************************************************/ |
115 |
133 |
116 /** Slave port. |
134 /** Slave port. |
117 */ |
135 */ |
121 ec_slave_t *next_slave; /**< Connected slaves. */ |
139 ec_slave_t *next_slave; /**< Connected slaves. */ |
122 uint32_t receive_time; /**< Port receive times for delay |
140 uint32_t receive_time; /**< Port receive times for delay |
123 measurement. */ |
141 measurement. */ |
124 uint32_t delay_to_next_dc; /**< Delay to next slave with DC support behind |
142 uint32_t delay_to_next_dc; /**< Delay to next slave with DC support behind |
125 this port [ns]. */ |
143 this port [ns]. */ |
|
144 #ifdef EC_LOOP_CONTROL |
|
145 ec_slave_port_state_t state; /**< Port state for loop control. */ |
|
146 unsigned long link_detection_jiffies; /**< Time of link detection. */ |
|
147 #endif |
126 } ec_slave_port_t; |
148 } ec_slave_port_t; |
127 |
149 |
128 /*****************************************************************************/ |
150 /*****************************************************************************/ |
129 |
151 |
130 /** Slave information interface data. |
152 /** Slave information interface data. |
243 void ec_slave_clear(ec_slave_t *); |
265 void ec_slave_clear(ec_slave_t *); |
244 |
266 |
245 void ec_slave_clear_sync_managers(ec_slave_t *); |
267 void ec_slave_clear_sync_managers(ec_slave_t *); |
246 |
268 |
247 void ec_slave_request_state(ec_slave_t *, ec_slave_state_t); |
269 void ec_slave_request_state(ec_slave_t *, ec_slave_state_t); |
248 void ec_slave_set_state(ec_slave_t *, ec_slave_state_t); |
270 void ec_slave_set_dl_status(ec_slave_t *, uint16_t); |
|
271 void ec_slave_set_al_status(ec_slave_t *, ec_slave_state_t); |
249 |
272 |
250 // SII categories |
273 // SII categories |
251 int ec_slave_fetch_sii_strings(ec_slave_t *, const uint8_t *, size_t); |
274 int ec_slave_fetch_sii_strings(ec_slave_t *, const uint8_t *, size_t); |
252 int ec_slave_fetch_sii_general(ec_slave_t *, const uint8_t *, size_t); |
275 int ec_slave_fetch_sii_general(ec_slave_t *, const uint8_t *, size_t); |
253 int ec_slave_fetch_sii_syncs(ec_slave_t *, const uint8_t *, size_t); |
276 int ec_slave_fetch_sii_syncs(ec_slave_t *, const uint8_t *, size_t); |