16 #include <unordered_map>
24 namespace uhd {
namespace rfnoc {
33 using sptr = std::shared_ptr<mb_controller>;
65 using sptr = std::shared_ptr<timekeeper>;
105 virtual uint64_t get_ticks_now() = 0;
120 virtual uint64_t get_ticks_last_pps() = 0;
136 virtual void set_ticks_now(
const uint64_t ticks) = 0;
163 virtual void set_ticks_next_pps(
const uint64_t ticks) = 0;
167 double get_tick_rate()
181 void set_tick_rate(
const double rate);
187 virtual void set_period(
const uint64_t period_ns) = 0;
191 double _tick_rate = 1.0;
200 size_t get_num_timekeepers()
const;
214 timekeeper::sptr get_timekeeper(
const size_t tk_idx)
const;
227 virtual std::string get_mboard_name()
const = 0;
270 virtual void set_time_source(
const std::string&
source) = 0;
276 virtual std::string get_time_source()
const = 0;
282 virtual std::vector<std::string> get_time_sources()
const = 0;
325 virtual void set_clock_source(
const std::string&
source) = 0;
331 virtual std::string get_clock_source()
const = 0;
337 virtual std::vector<std::string> get_clock_sources()
const = 0;
348 virtual void set_sync_source(
349 const std::string& clock_source,
const std::string& time_source) = 0;
392 virtual std::vector<uhd::device_addr_t> get_sync_sources() = 0;
401 virtual void set_clock_source_out(
const bool enb) = 0;
410 virtual void set_time_source_out(
const bool enb) = 0;
423 virtual std::vector<std::string> get_sensor_names() = 0;
464 virtual bool synchronize(std::vector<mb_controller::sptr>& mb_controllers,
466 const bool quiet =
false);
473 virtual std::vector<std::string> get_gpio_banks()
const;
480 virtual std::vector<std::string> get_gpio_srcs(
const std::string& bank)
const;
484 virtual std::vector<std::string> get_gpio_src(
const std::string& bank);
493 virtual void set_gpio_src(
494 const std::string& bank,
const std::vector<std::string>& src);
504 virtual void register_sync_source_updater(sync_source_updater_t callback_f);
510 void register_timekeeper(
const size_t idx, timekeeper::sptr tk);
516 std::unordered_map<size_t, timekeeper::sptr> _timekeepers;