55 using std::chrono::duration_cast;
56 using FloatingPointDuration = std::chrono::duration<
double,
Clock::period>;
57 const FloatingPointDuration delay = m_tx_start + m_interval - m_runtime.now();
60 if (duty_cycle > 0.0) {
61 if (delay.count() > 0.0) {
63 const FloatingPointDuration interval = (m_tx_on / duty_cycle) * (delay / m_interval);
64 m_interval = clamp_interval(duration_cast<Clock::duration>(interval) + m_runtime.now() - m_tx_start);
67 const FloatingPointDuration interval = m_tx_on / duty_cycle;
68 m_interval = clamp_interval(duration_cast<Clock::duration>(interval));
72 m_interval = max_interval;