#include <limeric.hpp>
Classes | |
struct | DualAlphaParameters |
struct | Parameters |
Public Member Functions | |
Limeric (Runtime &) | |
Limeric (Runtime &, const Parameters &) | |
void | update_cbr (ChannelLoad) |
ChannelLoad | average_cbr () const |
UnitInterval | permitted_duty_cycle () const override |
void | configure_dual_alpha (const boost::optional< DualAlphaParameters > ¶ms) |
Public Attributes | |
HookRegistry< const Limeric *, Clock::time_point > | on_duty_cycle_change |
Private Member Functions | |
void | calculate (Clock::time_point) |
void | schedule () |
UnitInterval | calculate_duty_cycle () const |
Private Attributes | |
Runtime & | m_runtime |
Parameters | m_params |
boost::optional< DualAlphaParameters > | m_dual_alpha |
ChannelLoad | m_channel_load |
UnitInterval | m_duty_cycle |
boost::circular_buffer< ChannelLoad > | m_cbr |
Hook< const Limeric *, Clock::time_point > | m_duty_cycle_change |
LIMERIC adapted to ETSI ITS
This implementation follows TS 102 687 v1.2.1 section 5.4 Optionally, the dual-alpha convergence proposed in [1] can be enabled.
[1] Ignacio Soto, Oscar Amador, Manuel Uruena, Maria Calderon "Strengths and Weaknesses of the ETSI Adaptive DCC Algorithm: A Proposal for Improvement" DOI: 10.1109/LCOMM.2019.2906178
Definition at line 32 of file limeric.hpp.
vanetza::dcc::Limeric::Limeric | ( | Runtime & | rt | ) |
Definition at line 14 of file limeric.cpp.
vanetza::dcc::Limeric::Limeric | ( | Runtime & | rt, |
const Parameters & | params | ||
) |
Definition at line 18 of file limeric.cpp.
vanetza::dcc::Limeric::~Limeric | ( | ) |
Definition at line 26 of file limeric.cpp.
ChannelLoad vanetza::dcc::Limeric::average_cbr | ( | ) | const |
Get current averaged CBR.
Definition at line 31 of file limeric.cpp.
|
private |
Definition at line 70 of file limeric.cpp.
|
private |
Definition at line 49 of file limeric.cpp.
void vanetza::dcc::Limeric::configure_dual_alpha | ( | const boost::optional< DualAlphaParameters > & | params | ) |
Configure dual-alpha convergence
params | dual-alpha parameters, boost::none disables dual-alpha convergence |
Definition at line 94 of file limeric.cpp.
|
inlineoverridevirtual |
Get permitted duty cycle as calculated by the last periodic update
Implements vanetza::dcc::DutyCyclePermit.
Definition at line 77 of file limeric.hpp.
|
private |
Definition at line 78 of file limeric.cpp.
void vanetza::dcc::Limeric::update_cbr | ( | ChannelLoad | cbr | ) |
Report new channel load measurement
cl | channel load measurement |
Definition at line 40 of file limeric.cpp.
|
private |
Definition at line 102 of file limeric.hpp.
|
private |
Definition at line 100 of file limeric.hpp.
|
private |
Definition at line 99 of file limeric.hpp.
|
private |
Definition at line 101 of file limeric.hpp.
Definition at line 103 of file limeric.hpp.
|
private |
Definition at line 98 of file limeric.hpp.
|
private |
Definition at line 97 of file limeric.hpp.
HookRegistry<const Limeric*, Clock::time_point> vanetza::dcc::Limeric::on_duty_cycle_change |
Called every time the permitted duty cycle is updated
this | instance itself |
time | point for which algorithm update has been scheduled |
Definition at line 84 of file limeric.hpp.