master/fsm_slave_scan.c
changeset 1425 c1322a8793c0
parent 1420 5eb814732c46
child 1470 cb424feef942
equal deleted inserted replaced
1424:cb02dbe4076f 1425:c1322a8793c0
   309         slave->base_sync_count = EC_MAX_SYNC_MANAGERS;
   309         slave->base_sync_count = EC_MAX_SYNC_MANAGERS;
   310     }
   310     }
   311 
   311 
   312     octet = EC_READ_U8(datagram->data + 7);
   312     octet = EC_READ_U8(datagram->data + 7);
   313     for (i = 0; i < EC_MAX_PORTS; i++) {
   313     for (i = 0; i < EC_MAX_PORTS; i++) {
   314         slave->base_ports[i] = (octet >> (2 * i)) & 0x03;
   314         slave->ports[i].desc = (octet >> (2 * i)) & 0x03;
   315     }
   315     }
   316     
   316     
   317     octet = EC_READ_U8(datagram->data + 8);
   317     octet = EC_READ_U8(datagram->data + 8);
   318     slave->base_fmmu_bit_operation = octet & 0x01;
   318     slave->base_fmmu_bit_operation = octet & 0x01;
   319     slave->base_dc_supported = (octet >> 2) & 0x01;
   319     slave->base_dc_supported = (octet >> 2) & 0x01;
   415         ec_datagram_print_wc_error(datagram);
   415         ec_datagram_print_wc_error(datagram);
   416         return;
   416         return;
   417     }
   417     }
   418 
   418 
   419     for (i = 0; i < EC_MAX_PORTS; i++) {
   419     for (i = 0; i < EC_MAX_PORTS; i++) {
   420         slave->dc_receive_times[i] = EC_READ_U32(datagram->data + 4 * i);
   420         slave->ports[i].receive_time = EC_READ_U32(datagram->data + 4 * i);
   421     }
   421     }
   422 
   422 
   423     ec_fsm_slave_scan_enter_datalink(fsm);
   423     ec_fsm_slave_scan_enter_datalink(fsm);
   424 }
   424 }
   425 
   425 
   476         return;
   476         return;
   477     }
   477     }
   478 
   478 
   479     dl_status = EC_READ_U16(datagram->data);
   479     dl_status = EC_READ_U16(datagram->data);
   480     for (i = 0; i < EC_MAX_PORTS; i++) {
   480     for (i = 0; i < EC_MAX_PORTS; i++) {
   481         slave->ports[i].dl_link = dl_status & (1 << (4 + i)) ? 1 : 0;
   481         slave->ports[i].link.link_up = dl_status & (1 << (4 + i)) ? 1 : 0;
   482         slave->ports[i].dl_loop = dl_status & (1 << (8 + i * 2)) ? 1 : 0;
   482         slave->ports[i].link.loop_closed = dl_status & (1 << (8 + i * 2)) ? 1 : 0;
   483         slave->ports[i].dl_signal = dl_status & (1 << (9 + i * 2)) ? 1 : 0;
   483         slave->ports[i].link.signal_detected = dl_status & (1 << (9 + i * 2)) ? 1 : 0;
   484     }
   484     }
   485 
   485 
   486     // Start fetching SII size
   486     // Start fetching SII size
   487 
   487 
   488     fsm->sii_offset = EC_FIRST_SII_CATEGORY_OFFSET; // first category header
   488     fsm->sii_offset = EC_FIRST_SII_CATEGORY_OFFSET; // first category header