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::Clock
Definition
clock.hpp:16
vanetza::Runtime
Definition
runtime.hpp:16
vanetza::dcc::BurstyTransmitRateControl
Definition
bursty_transmit_rate_control.hpp:25
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::StateMachine::transmission_interval
virtual Clock::duration transmission_interval() const =0
vanetza::dcc::Transmission
Definition
transmission.hpp:15
vanetza
dcc
bursty_transmit_rate_control.cpp
Generated on
for Vanetza by
1.16.1