equal
deleted
inserted
replaced
56 |
56 |
57 /*****************************************************************************/ |
57 /*****************************************************************************/ |
58 |
58 |
59 /** |
59 /** |
60 Liest alle benötigten Informationen aus einem Slave. |
60 Liest alle benötigten Informationen aus einem Slave. |
|
61 |
|
62 \return 0 wenn alles ok, < 0 bei Fehler. |
61 */ |
63 */ |
62 |
64 |
63 int ec_slave_fetch(ec_slave_t *slave /**< EtherCAT-Slave */) |
65 int ec_slave_fetch(ec_slave_t *slave /**< EtherCAT-Slave */) |
64 { |
66 { |
65 ec_frame_t frame; |
67 ec_frame_t frame; |
184 /*****************************************************************************/ |
186 /*****************************************************************************/ |
185 |
187 |
186 /** |
188 /** |
187 Bestätigt einen Fehler beim Zustandswechsel. |
189 Bestätigt einen Fehler beim Zustandswechsel. |
188 |
190 |
189 FIXME Funktioniert noch nicht... |
191 \todo Funktioniert noch nicht... |
190 */ |
192 */ |
191 |
193 |
192 void ec_slave_state_ack(ec_slave_t *slave, |
194 void ec_slave_state_ack(ec_slave_t *slave, |
193 /**< Slave, dessen Zustand geändert werden soll */ |
195 /**< Slave, dessen Zustand geändert werden soll */ |
194 uint8_t state |
196 uint8_t state |
340 // FMMU schon vorgemerkt? |
342 // FMMU schon vorgemerkt? |
341 for (i = 0; i < slave->fmmu_count; i++) |
343 for (i = 0; i < slave->fmmu_count; i++) |
342 if (slave->fmmus[i].domain == domain && slave->fmmus[i].sync == sync) |
344 if (slave->fmmus[i].domain == domain && slave->fmmus[i].sync == sync) |
343 return 0; |
345 return 0; |
344 |
346 |
|
347 // Neue FMMU reservieren... |
|
348 |
345 if (slave->fmmu_count >= slave->base_fmmu_count) { |
349 if (slave->fmmu_count >= slave->base_fmmu_count) { |
346 EC_ERR("Slave %i FMMU limit reached!\n", slave->ring_position); |
350 EC_ERR("Slave %i FMMU limit reached!\n", slave->ring_position); |
347 return -1; |
351 return -1; |
348 } |
352 } |
349 |
353 |