diff -r 19ff84bbbcb3 -r 1a969896d52e master/fsm_slave_scan.c --- a/master/fsm_slave_scan.c Thu Feb 19 15:19:29 2015 +0100 +++ b/master/fsm_slave_scan.c Fri Feb 20 16:06:23 2015 +0100 @@ -493,8 +493,6 @@ { ec_datagram_t *datagram = fsm->datagram; ec_slave_t *slave = fsm->slave; - uint16_t dl_status; - unsigned int i; if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--) return; @@ -514,15 +512,7 @@ return; } - dl_status = EC_READ_U16(datagram->data); - for (i = 0; i < EC_MAX_PORTS; i++) { - slave->ports[i].link.link_up = - dl_status & (1 << (4 + i)) ? 1 : 0; - slave->ports[i].link.loop_closed = - dl_status & (1 << (8 + i * 2)) ? 1 : 0; - slave->ports[i].link.signal_detected = - dl_status & (1 << (9 + i * 2)) ? 1 : 0; - } + ec_slave_set_dl_status(slave, EC_READ_U16(datagram->data)); #ifdef EC_SII_ASSIGN ec_fsm_slave_scan_enter_assign_sii(fsm);