Vanetza
Loading...
Searching...
No Matches
bursty_transmit_rate_control.cpp
1
#include <vanetza/common/runtime.hpp>
2
#include <vanetza/dcc/bursty_transmit_rate_control.hpp>
3
#include <vanetza/dcc/state_machine.hpp>
4
#include <stdexcept>
5
6
namespace
vanetza
7
{
8
namespace
dcc
9
{
10
11
BurstyTransmitRateControl::BurstyTransmitRateControl(
const
StateMachine
& fsm,
const
Runtime& rt) :
12
m_burst_budget(rt), m_fsm_budget(fsm, rt), m_fsm(fsm)
13
{
14
}
15
16
Clock::duration
BurstyTransmitRateControl::delay
(
const
Transmission
& tx)
17
{
18
Clock::duration
delay
= Clock::duration::max();
19
20
switch
(tx.profile()) {
21
case
Profile::DP0:
22
delay
= m_burst_budget.delay();
23
break
;
24
case
Profile::DP1:
25
case
Profile::DP2:
26
case
Profile::DP3:
27
delay
= m_fsm_budget.delay();
28
break
;
29
default
:
30
throw
std::invalid_argument(
"Invalid DCC Profile"
);
31
break
;
32
};
33
34
return
delay
;
35
}
36
37
Clock::duration
BurstyTransmitRateControl::interval
(
const
Transmission
& tx)
38
{
39
Clock::duration
interval
= Clock::duration::max();
40
41
switch
(tx.profile()) {
42
case
Profile::DP0:
43
interval
= m_burst_budget.burst_period();
44
break
;
45
case
Profile::DP1:
46
case
Profile::DP2:
47
case
Profile::DP3:
48
interval
= m_fsm.transmission_interval();
49
break
;
50
default
:
51
throw
std::invalid_argument(
"Invalid DCC Profile"
);
52
break
;
53
}
54
55
return
interval
;
56
}
57
58
void
BurstyTransmitRateControl::notify
(
const
Transmission
& tx)
59
{
60
switch
(tx.profile()) {
61
case
Profile::DP0:
62
m_burst_budget.notify();
63
break
;
64
case
Profile::DP1:
65
case
Profile::DP2:
66
case
Profile::DP3:
67
m_fsm_budget.notify();
68
break
;
69
default
:
70
throw
std::invalid_argument(
"Invalid DCC Profile"
);
71
break
;
72
};
73
}
74
75
}
// namespace dcc
76
}
// namespace vanetza
vanetza::dcc::BurstyTransmitRateControl::delay
Clock::duration delay(const Transmission &) override
Definition
bursty_transmit_rate_control.cpp:16
vanetza::dcc::BurstyTransmitRateControl::notify
void notify(const Transmission &) override
Definition
bursty_transmit_rate_control.cpp:58
vanetza::dcc::BurstyTransmitRateControl::interval
Clock::duration interval(const Transmission &) override
Definition
bursty_transmit_rate_control.cpp:37
vanetza::dcc::StateMachine
Definition
state_machine.hpp:16
vanetza::dcc::Transmission
Definition
transmission.hpp:15
vanetza
dcc
bursty_transmit_rate_control.cpp
Generated on
for Vanetza by
1.14.0