Send sync datagrams only if reference clock is found.

This commit is contained in:
Florian Pose 2012-12-05 15:54:49 +01:00
parent 4750f20558
commit 43202f7e32
1 changed files with 9 additions and 6 deletions

View File

@ -2072,8 +2072,7 @@ void ec_master_request_op(
// always set DC reference clock to OP
if (master->dc_ref_clock) {
ec_slave_request_state(master->dc_ref_clock,
EC_SLAVE_STATE_OP);
ec_slave_request_state(master->dc_ref_clock, EC_SLAVE_STATE_OP);
}
}
@ -2629,16 +2628,20 @@ int ecrt_master_reference_clock_time(ec_master_t *master, uint32_t *time)
void ecrt_master_sync_reference_clock(ec_master_t *master)
{
EC_WRITE_U32(master->ref_sync_datagram.data, master->app_time);
ec_master_queue_datagram(master, &master->ref_sync_datagram);
if (master->dc_ref_clock) {
EC_WRITE_U32(master->ref_sync_datagram.data, master->app_time);
ec_master_queue_datagram(master, &master->ref_sync_datagram);
}
}
/*****************************************************************************/
void ecrt_master_sync_slave_clocks(ec_master_t *master)
{
ec_datagram_zero(&master->sync_datagram);
ec_master_queue_datagram(master, &master->sync_datagram);
if (master->dc_ref_clock) {
ec_datagram_zero(&master->sync_datagram);
ec_master_queue_datagram(master, &master->sync_datagram);
}
}
/*****************************************************************************/