diff -r 3425c621ee46 -r e93efb4af231 lib/master.c --- a/lib/master.c Tue Nov 20 14:33:16 2012 +0100 +++ b/lib/master.c Tue Nov 20 14:35:53 2012 +0100 @@ -200,6 +200,31 @@ return sc; } +/*****************************************************************************/ + +int ecrt_master_select_reference_clock(ec_master_t *master, + ec_slave_config_t *sc) +{ + uint32_t config_index; + int ret; + + if (sc) { + config_index = sc->index; + } + else { + config_index = 0xFFFFFFFF; + } + + ret = ioctl(master->fd, EC_IOCTL_SELECT_REF_CLOCK, config_index); + if (EC_IOCTL_IS_ERROR(ret)) { + fprintf(stderr, "Failed to select reference clock: %s\n", + strerror(EC_IOCTL_ERRNO(ret))); + return -EC_IOCTL_ERRNO(ret); + } + + return 0; +} + /****************************************************************************/ int ecrt_master(ec_master_t *master, ec_master_info_t *master_info) @@ -681,6 +706,21 @@ } } +/*****************************************************************************/ + +int ecrt_master_reference_clock_time(ec_master_t *master, uint32_t *time) +{ + int ret; + + ret = ioctl(master->fd, EC_IOCTL_REF_CLOCK_TIME, time); + if (EC_IOCTL_IS_ERROR(ret)) { + fprintf(stderr, "Failed to get reference clock time: %s\n", + strerror(EC_IOCTL_ERRNO(ret))); + } + + return ret; +} + /****************************************************************************/ void ecrt_master_sync_monitor_queue(ec_master_t *master)