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: