Vanetza
Loading...
Searching...
No Matches
vanetza::dcc::Limeric Class Reference

#include <limeric.hpp>

Inheritance diagram for vanetza::dcc::Limeric:

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 > &params)

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

Runtimem_runtime
Parameters m_params
boost::optional< DualAlphaParametersm_dual_alpha
ChannelLoad m_channel_load
UnitInterval m_duty_cycle
boost::circular_buffer< ChannelLoadm_cbr
Hook< const Limeric *, Clock::time_point > m_duty_cycle_change

Detailed Description

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.

Constructor & Destructor Documentation

◆ Limeric() [1/2]

vanetza::dcc::Limeric::Limeric ( Runtime & rt)

Definition at line 14 of file limeric.cpp.

◆ Limeric() [2/2]

vanetza::dcc::Limeric::Limeric ( Runtime & rt,
const Parameters & params )

Definition at line 18 of file limeric.cpp.

◆ ~Limeric()

vanetza::dcc::Limeric::~Limeric ( )

Definition at line 26 of file limeric.cpp.

Member Function Documentation

◆ average_cbr()

ChannelLoad vanetza::dcc::Limeric::average_cbr ( ) const

Get current averaged CBR.

Note
The result incorporates previous measurements as well as the averaged CBR during last periodic update.
Returns
averaged CBR

Definition at line 31 of file limeric.cpp.

◆ calculate()

void vanetza::dcc::Limeric::calculate ( Clock::time_point tp)
private

Definition at line 70 of file limeric.cpp.

◆ calculate_duty_cycle()

UnitInterval vanetza::dcc::Limeric::calculate_duty_cycle ( ) const
private

Definition at line 49 of file limeric.cpp.

◆ configure_dual_alpha()

void vanetza::dcc::Limeric::configure_dual_alpha ( const boost::optional< DualAlphaParameters > & params)

Configure dual-alpha convergence

Parameters
paramsdual-alpha parameters, boost::none disables dual-alpha convergence

Definition at line 94 of file limeric.cpp.

◆ permitted_duty_cycle()

UnitInterval vanetza::dcc::Limeric::permitted_duty_cycle ( ) const
inlineoverridevirtual

Get permitted duty cycle as calculated by the last periodic update

Returns
permitted duty cycle

Implements vanetza::dcc::DutyCyclePermit.

Definition at line 77 of file limeric.hpp.

◆ schedule()

void vanetza::dcc::Limeric::schedule ( )
private

Definition at line 78 of file limeric.cpp.

◆ update_cbr()

void vanetza::dcc::Limeric::update_cbr ( ChannelLoad cbr)

Report new channel load measurement

Parameters
clchannel load measurement

Definition at line 40 of file limeric.cpp.

Member Data Documentation

◆ m_cbr

boost::circular_buffer<ChannelLoad> vanetza::dcc::Limeric::m_cbr
private

Definition at line 102 of file limeric.hpp.

◆ m_channel_load

ChannelLoad vanetza::dcc::Limeric::m_channel_load
private

Definition at line 100 of file limeric.hpp.

◆ m_dual_alpha

boost::optional<DualAlphaParameters> vanetza::dcc::Limeric::m_dual_alpha
private

Definition at line 99 of file limeric.hpp.

◆ m_duty_cycle

UnitInterval vanetza::dcc::Limeric::m_duty_cycle
private

Definition at line 101 of file limeric.hpp.

◆ m_duty_cycle_change

Hook<const Limeric*, Clock::time_point> vanetza::dcc::Limeric::m_duty_cycle_change
private

Definition at line 103 of file limeric.hpp.

◆ m_params

Parameters vanetza::dcc::Limeric::m_params
private

Definition at line 98 of file limeric.hpp.

◆ m_runtime

Runtime& vanetza::dcc::Limeric::m_runtime
private

Definition at line 97 of file limeric.hpp.

◆ on_duty_cycle_change

HookRegistry<const Limeric*, Clock::time_point> vanetza::dcc::Limeric::on_duty_cycle_change

Called every time the permitted duty cycle is updated

Parameters
thisinstance itself
timepoint for which algorithm update has been scheduled

Definition at line 84 of file limeric.hpp.


The documentation for this class was generated from the following files: