mirror of
https://gitlab.com/etherlab.org/ethercat.git
synced 2026-02-06 03:41:52 +08:00
Retry responding slaves datagram; more robust to timeouts.
This commit is contained in:
@@ -242,6 +242,7 @@ void ec_fsm_master_state_start(
|
||||
ec_datagram_brd(fsm->datagram, 0x0130, 2);
|
||||
ec_datagram_zero(fsm->datagram);
|
||||
fsm->datagram->device_index = fsm->dev_idx;
|
||||
fsm->retries = EC_FSM_RETRIES;
|
||||
fsm->state = ec_fsm_master_state_broadcast;
|
||||
}
|
||||
|
||||
@@ -260,6 +261,10 @@ void ec_fsm_master_state_broadcast(
|
||||
ec_slave_t *slave;
|
||||
ec_master_t *master = fsm->master;
|
||||
|
||||
if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--) {
|
||||
return;
|
||||
}
|
||||
|
||||
// bus topology change?
|
||||
if (datagram->working_counter != fsm->slaves_responding[fsm->dev_idx]) {
|
||||
fsm->rescan_required = 1;
|
||||
|
||||
Reference in New Issue
Block a user