equal
deleted
inserted
replaced
491 ec_fsm_slave_scan_t *fsm /**< slave state machine */ |
491 ec_fsm_slave_scan_t *fsm /**< slave state machine */ |
492 ) |
492 ) |
493 { |
493 { |
494 ec_datagram_t *datagram = fsm->datagram; |
494 ec_datagram_t *datagram = fsm->datagram; |
495 ec_slave_t *slave = fsm->slave; |
495 ec_slave_t *slave = fsm->slave; |
496 uint16_t dl_status; |
|
497 unsigned int i; |
|
498 |
496 |
499 if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--) |
497 if (datagram->state == EC_DATAGRAM_TIMED_OUT && fsm->retries--) |
500 return; |
498 return; |
501 |
499 |
502 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
500 if (datagram->state != EC_DATAGRAM_RECEIVED) { |
512 EC_SLAVE_ERR(slave, "Failed to read DL status: "); |
510 EC_SLAVE_ERR(slave, "Failed to read DL status: "); |
513 ec_datagram_print_wc_error(datagram); |
511 ec_datagram_print_wc_error(datagram); |
514 return; |
512 return; |
515 } |
513 } |
516 |
514 |
517 dl_status = EC_READ_U16(datagram->data); |
515 ec_slave_set_dl_status(slave, EC_READ_U16(datagram->data)); |
518 for (i = 0; i < EC_MAX_PORTS; i++) { |
|
519 slave->ports[i].link.link_up = |
|
520 dl_status & (1 << (4 + i)) ? 1 : 0; |
|
521 slave->ports[i].link.loop_closed = |
|
522 dl_status & (1 << (8 + i * 2)) ? 1 : 0; |
|
523 slave->ports[i].link.signal_detected = |
|
524 dl_status & (1 << (9 + i * 2)) ? 1 : 0; |
|
525 } |
|
526 |
516 |
527 #ifdef EC_SII_ASSIGN |
517 #ifdef EC_SII_ASSIGN |
528 ec_fsm_slave_scan_enter_assign_sii(fsm); |
518 ec_fsm_slave_scan_enter_assign_sii(fsm); |
529 #else |
519 #else |
530 ec_fsm_slave_scan_enter_sii_size(fsm); |
520 ec_fsm_slave_scan_enter_sii_size(fsm); |