# HG changeset patch # User Florian Pose # Date 1240488146 0 # Node ID fb6719008bf56df3f53cc666a7dc74e8804ad2c1 # Parent eb1e2540cb021bf5543d11795438baee4fda882a Separated sync_reference_clock() and sync_slave_clocks(). diff -r eb1e2540cb02 -r fb6719008bf5 include/ecrt.h --- a/include/ecrt.h Mon Apr 20 14:37:30 2009 +0000 +++ b/include/ecrt.h Thu Apr 23 12:02:26 2009 +0000 @@ -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 @@ ec_master_state_t *state /**< Structure to store the information. */ ); -/** Queues the DC 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. - */ -void ecrt_master_sync( +/** Queues the DC reference clock drift compensation datagram for sending. + * + * The reference clock will by synchronized to the \a app_time. + */ +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 *****************************************************************************/ diff -r eb1e2540cb02 -r fb6719008bf5 master/master.c --- a/master/master.c Mon Apr 20 14:37:30 2009 +0000 +++ b/master/master.c Thu Apr 23 12:02:26 2009 +0000 @@ -1648,19 +1648,20 @@ /*****************************************************************************/ -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_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 */