Separated sync_reference_clock() and sync_slave_clocks().

This commit is contained in:
Florian Pose 2009-04-23 12:02:26 +00:00
parent 0083914b5f
commit fe56cc111c
2 changed files with 22 additions and 12 deletions

View File

@ -44,7 +44,8 @@
* - Added the distributed clocks feature and the respective methods
* ecrt_slave_config_dc_assign_activate() and
* ecrt_slave_config_dc_sync_cycle_times() to configure a slave for cyclic
* operation, and ecrt_master_sync() for drift compensation.
* operation, and ecrt_master_sync_reference_clock() and
* ecrt_master_sync_slave_clocks() for drift compensation.
* - Changed the meaning of the negative return values of
* ecrt_slave_config_reg_pdo_entry() and ecrt_slave_config_sdo*().
* - Imlemented the Vendor-specific over EtherCAT mailbox protocol. See
@ -506,16 +507,23 @@ void ecrt_master_state(
ec_master_state_t *state /**< Structure to store the information. */
);
/** Queues the DC drift compensation datagram for sending.
/** Queues the DC reference clock drift compensation datagram for sending.
*
* The reference clock will by synchronized to the \a app_time, while the
* other slaves will by synchronized to the reference clock.
* The reference clock will by synchronized to the \a app_time.
*/
void ecrt_master_sync(
void ecrt_master_sync_reference_clock(
ec_master_t *master, /**< EtherCAT master. */
const struct timeval *app_time /**< Application time. */
);
/** Queues the DC clock drift compensation datagram for sending.
*
* All slave clocks synchronized to the reference clock.
*/
void ecrt_master_sync_slave_clocks(
ec_master_t *master /**< EtherCAT master. */
);
/******************************************************************************
* Slave configuration methods
*****************************************************************************/

View File

@ -1648,19 +1648,20 @@ void ecrt_master_state(const ec_master_t *master, ec_master_state_t *state)
/*****************************************************************************/
void ecrt_master_sync(ec_master_t *master, const struct timeval *app_time)
void ecrt_master_sync_reference_clock(ec_master_t *master,
const struct timeval *app_time)
{
master->app_time = EC_TIMEVAL2NANO(app_time);
#if 1
EC_WRITE_U32(master->ref_sync_datagram.data, master->app_time);
ec_master_queue_datagram(master, &master->ref_sync_datagram);
#endif
}
#if 1
/*****************************************************************************/
void ecrt_master_sync_slave_clocks(ec_master_t *master)
{
ec_datagram_zero(&master->sync_datagram);
ec_master_queue_datagram(master, &master->sync_datagram);
#endif
}
/*****************************************************************************/
@ -1674,7 +1675,8 @@ EXPORT_SYMBOL(ecrt_master_receive);
EXPORT_SYMBOL(ecrt_master_callbacks);
EXPORT_SYMBOL(ecrt_master_slave_config);
EXPORT_SYMBOL(ecrt_master_state);
EXPORT_SYMBOL(ecrt_master_sync);
EXPORT_SYMBOL(ecrt_master_sync_reference_clock);
EXPORT_SYMBOL(ecrt_master_sync_slave_clocks);
/** \endcond */