diff options
author | Dimitri Stolnikov <horiz0n@gmx.net> | 2014-05-03 22:25:23 +0200 |
---|---|---|
committer | Dimitri Stolnikov <horiz0n@gmx.net> | 2014-11-25 20:47:59 +0100 |
commit | aa4094b3fd103a5b7fbcd3b8a0e225cfe70a6c6f (patch) | |
tree | 14d075a6fc39e9438bde344e74f795dbac817760 /lib/source_impl.cc | |
parent | da27f3fb0a614c2cb9f5f867be8df77f53058f28 (diff) |
introduce time & clock synchronisation APIs
Diffstat (limited to 'lib/source_impl.cc')
-rw-r--r-- | lib/source_impl.cc | 101 |
1 files changed, 100 insertions, 1 deletions
diff --git a/lib/source_impl.cc b/lib/source_impl.cc index 68a8423..e4c9be6 100644 --- a/lib/source_impl.cc +++ b/lib/source_impl.cc @@ -329,7 +329,7 @@ source_impl::source_impl( const std::string &args ) #endif } } else if ( (iface != NULL) || (long(block.get()) != 0) ) - throw std::runtime_error("Eitner iface or block are NULL."); + throw std::runtime_error("Either iface or block are NULL."); } @@ -811,3 +811,102 @@ osmosdr::freq_range_t source_impl::get_bandwidth_range( size_t chan ) return osmosdr::freq_range_t(); } + +void source_impl::set_time_source(const std::string &source, const size_t mboard) +{ + if (mboard != osmosdr::ALL_MBOARDS){ + _devs.at(mboard)->set_time_source( source ); + return; + } + + for (size_t m = 0; m < _devs.size(); m++){ /* propagate ALL_MBOARDS */ + _devs.at(m)->set_time_source( source, osmosdr::ALL_MBOARDS ); + } +} + +std::string source_impl::get_time_source(const size_t mboard) +{ + return _devs.at(mboard)->get_time_source( mboard ); +} + +std::vector<std::string> source_impl::get_time_sources(const size_t mboard) +{ + return _devs.at(mboard)->get_time_sources( mboard ); +} + +void source_impl::set_clock_source(const std::string &source, const size_t mboard) +{ + if (mboard != osmosdr::ALL_MBOARDS){ + _devs.at(mboard)->set_clock_source( source ); + return; + } + + for (size_t m = 0; m < _devs.size(); m++){ /* propagate ALL_MBOARDS */ + _devs.at(m)->set_clock_source( source, osmosdr::ALL_MBOARDS ); + } +} + +std::string source_impl::get_clock_source(const size_t mboard) +{ + return _devs.at(mboard)->get_clock_source( mboard ); +} + +std::vector<std::string> source_impl::get_clock_sources(const size_t mboard) +{ + return _devs.at(mboard)->get_clock_sources( mboard ); +} + +double source_impl::get_clock_rate(size_t mboard) +{ + return _devs.at(mboard)->get_clock_rate( mboard ); +} + +void source_impl::set_clock_rate(double rate, size_t mboard) +{ + if (mboard != osmosdr::ALL_MBOARDS){ + _devs.at(mboard)->set_clock_rate( rate ); + return; + } + + for (size_t m = 0; m < _devs.size(); m++){ /* propagate ALL_MBOARDS */ + _devs.at(m)->set_clock_rate( rate, osmosdr::ALL_MBOARDS ); + } +} + +osmosdr::time_spec_t source_impl::get_time_now(size_t mboard) +{ + return _devs.at(mboard)->get_time_now( mboard ); +} + +osmosdr::time_spec_t source_impl::get_time_last_pps(size_t mboard) +{ + return _devs.at(mboard)->get_time_last_pps( mboard ); +} + +void source_impl::set_time_now(const osmosdr::time_spec_t &time_spec, size_t mboard) +{ + if (mboard != osmosdr::ALL_MBOARDS){ + _devs.at(mboard)->set_time_now( time_spec ); + return; + } + + for (size_t m = 0; m < _devs.size(); m++){ /* propagate ALL_MBOARDS */ + _devs.at(m)->set_time_now( time_spec, osmosdr::ALL_MBOARDS ); + } +} + +void source_impl::set_time_next_pps(const osmosdr::time_spec_t &time_spec) +{ + BOOST_FOREACH( source_iface *dev, _devs ) + { + dev->set_time_next_pps( time_spec ); + } +} + +void source_impl::set_time_unknown_pps(const osmosdr::time_spec_t &time_spec) +{ + BOOST_FOREACH( source_iface *dev, _devs ) + { + dev->set_time_unknown_pps( time_spec ); + } +} |