Separated sync_reference_clock() and sync_slave_clocks().
--- 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
*****************************************************************************/
--- 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 */