1#include <vanetza/common/runtime.hpp>
2#include <vanetza/dcc/bursty_transmit_rate_control.hpp>
3#include <vanetza/dcc/state_machine.hpp>
11BurstyTransmitRateControl::BurstyTransmitRateControl(
const StateMachine& fsm,
const Runtime& rt) :
12 m_burst_budget(rt), m_fsm_budget(fsm, rt), m_fsm(fsm)
16Clock::duration BurstyTransmitRateControl::delay(
const Transmission& tx)
18 Clock::duration delay = Clock::duration::max();
20 switch (tx.profile()) {
22 delay = m_burst_budget.delay();
27 delay = m_fsm_budget.delay();
30 throw std::invalid_argument(
"Invalid DCC Profile");
37Clock::duration BurstyTransmitRateControl::interval(
const Transmission& tx)
39 Clock::duration interval = Clock::duration::max();
41 switch (tx.profile()) {
43 interval = m_burst_budget.burst_period();
48 interval = m_fsm.transmission_interval();
51 throw std::invalid_argument(
"Invalid DCC Profile");
60 switch (tx.profile()) {
62 m_burst_budget.notify();
67 m_fsm_budget.notify();
70 throw std::invalid_argument(
"Invalid DCC Profile");