15 #include <unordered_map> 20 namespace uhd {
namespace rfnoc {
27 using sptr = std::shared_ptr<mb_controller>;
42 using sptr = std::shared_ptr<timekeeper>;
66 virtual uint64_t get_ticks_now() = 0;
81 virtual uint64_t get_ticks_last_pps() = 0;
89 virtual void set_ticks_now(
const uint64_t ticks) = 0;
97 virtual void set_ticks_next_pps(
const uint64_t ticks) = 0;
115 void set_tick_rate(
const double rate);
121 virtual void set_period(
const uint64_t period_ns) = 0;
125 double _tick_rate = 1.0;
130 size_t get_num_timekeepers()
const;
135 timekeeper::sptr get_timekeeper(
const size_t tk_idx)
const;
148 virtual std::string get_mboard_name()
const = 0;
191 virtual void set_time_source(
const std::string&
source) = 0;
197 virtual std::string get_time_source()
const = 0;
203 virtual std::vector<std::string> get_time_sources()
const = 0;
246 virtual void set_clock_source(
const std::string&
source) = 0;
252 virtual std::string get_clock_source()
const = 0;
258 virtual std::vector<std::string> get_clock_sources()
const = 0;
269 virtual void set_sync_source(
270 const std::string& clock_source,
const std::string& time_source) = 0;
305 virtual std::vector<uhd::device_addr_t> get_sync_sources() = 0;
314 virtual void set_clock_source_out(
const bool enb) = 0;
323 virtual void set_time_source_out(
const bool enb) = 0;
336 virtual std::vector<std::string> get_sensor_names() = 0;
356 virtual bool synchronize(std::vector<mb_controller::sptr>& mb_controllers,
358 const bool quiet =
false);
365 virtual std::vector<std::string> get_gpio_banks()
const;
372 virtual std::vector<std::string> get_gpio_srcs(
const std::string& bank)
const;
376 virtual std::vector<std::string> get_gpio_src(
const std::string& bank);
385 virtual void set_gpio_src(
386 const std::string& bank,
const std::vector<std::string>& src);
392 void register_timekeeper(
const size_t idx, timekeeper::sptr tk);
398 std::unordered_map<size_t, timekeeper::sptr> _timekeepers;
boost::noncopyable noncopyable
Definition: noncopyable.hpp:45
std::function< void(uint64_t)> write_period_fn_t
Definition: mb_controller.hpp:43
Definition: mb_controller.hpp:24
Definition: time_spec.hpp:28
double get_tick_rate()
Definition: mb_controller.hpp:101
virtual void init()
Definition: mb_controller.hpp:142
virtual ~timekeeper()
Definition: mb_controller.hpp:47
Definition: build_info.hpp:12
Definition: sensors.hpp:28
virtual ~mb_controller()
Definition: mb_controller.hpp:29
source
Identify the source of calibration data, i.e., where was it stored.
Definition: database.hpp:22
std::shared_ptr< timekeeper > sptr
Definition: mb_controller.hpp:42
std::shared_ptr< mb_controller > sptr
Definition: mb_controller.hpp:27
Definition: mb_controller.hpp:39
#define UHD_API
Definition: config.h:67
Definition: device_addr.hpp:37