SensESP 3.0.1
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
sensesp::Throttle< T > Class Template Reference

Throttle the input rate. More...

#include <sensesp/transforms/throttle.h>

Inheritance diagram for sensesp::Throttle< T >:
[legend]

Public Member Functions

 Throttle (long min_interval)
 
void set (const T &input) override
 
- Public Member Functions inherited from sensesp::SymmetricTransform< T >
 SymmetricTransform (String config_path="")
 
- Public Member Functions inherited from sensesp::Transform< T, T >
 Transform (String config_path="")
 
Transform< T, T > * connect_from (ValueProducer< T > *producer0, ValueProducer< T > *producer1=NULL, ValueProducer< T > *producer2=NULL, ValueProducer< T > *producer3=NULL, ValueProducer< T > *producer4=NULL)
 
- Public Member Functions inherited from sensesp::TransformBase
 TransformBase (const String &config_path)
 
- Public Member Functions inherited from sensesp::FileSystemSaveable
 FileSystemSaveable (const String &config_path)
 
virtual bool load () override
 Load and populate the object from a persistent storage.
 
virtual bool save () override
 Save the object to a persistent storage.
 
virtual bool clear () override
 Delete the data from a persistent storage.
 
bool find_config_file (const String &config_path, String &filename)
 
- Public Member Functions inherited from sensesp::Saveable
 Saveable (const String &config_path)
 
virtual bool refresh ()
 Refresh the object. This may or may not access the persistent storage but is not expected to overwrite the object's state.
 
const String & get_config_path () const
 
- Public Member Functions inherited from sensesp::Serializable
virtual bool to_json (JsonObject &root)
 
virtual bool from_json (const JsonObject &root)
 
- Public Member Functions inherited from sensesp::ValueConsumer< T >
virtual void set_input (const T &new_value)
 
void connect_from (ValueProducer< T > *producer)
 
- Public Member Functions inherited from sensesp::ValueProducer< T >
 ValueProducer ()
 
 ValueProducer (const T &initial_value)
 
virtual const T & get () const
 
template<typename VConsumer >
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< T, typenameVConsumer::input_type >::value, std::shared_ptr< VConsumer > >::type connect_to (std::shared_ptr< VConsumer > consumer)
 Connect a producer to a transform with a different input type.
 
template<typename VConsumer >
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< T, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer *consumer)
 
template<typename VConsumer >
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< T, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer &consumer)
 
void emit (const T &new_value)
 
- Public Member Functions inherited from sensesp::Observable
 Observable ()
 
 Observable (Observable &&other)
 Move constructor.
 
void notify ()
 
void attach (std::function< void()> observer)
 

Protected Attributes

long min_interval_
 
elapsedMillis age_ = LONG_MAX
 
- Protected Attributes inherited from sensesp::Saveable
const String config_path_
 
- Protected Attributes inherited from sensesp::ValueProducer< T >
output_
 

Additional Inherited Members

- Public Types inherited from sensesp::ValueConsumer< T >
using input_type = T
 
- Static Public Member Functions inherited from sensesp::TransformBase
static const std::set< TransformBase * > & get_transforms ()
 

Detailed Description

template<typename T>
class sensesp::Throttle< T >

Throttle the input rate.

Make sure that a frequently changing value is only reported at a specified minimum interval. If, for example, the input value changes every 100ms, but you only want to process it every 1000ms, you can use this transform. It does not average or buffer any values, it just throws away values that are too frequent.

In many cases, you might want to consider the moving_average transform instead of this one. The moving_average transform will smooth out the input values, while this one will only emit the last value.

Parameters
min_intervalMinimum time, in ms, before a new value is emitted again.

Definition at line 29 of file throttle.h.

Constructor & Destructor Documentation

◆ Throttle()

template<typename T >
sensesp::Throttle< T >::Throttle ( long min_interval)
inline

Definition at line 31 of file throttle.h.

Member Function Documentation

◆ set()

template<typename T >
void sensesp::Throttle< T >::set ( const T & new_value)
inlineoverridevirtual

Used to set an input of this consumer. It is called automatically by a ValueProducer but can also be called manually.

Parameters
new_valuethe value of the input

Reimplemented from sensesp::ValueConsumer< T >.

Definition at line 34 of file throttle.h.

Here is the call graph for this function:

Member Data Documentation

◆ age_

template<typename T >
elapsedMillis sensesp::Throttle< T >::age_ = LONG_MAX
protected

Definition at line 44 of file throttle.h.

◆ min_interval_

template<typename T >
long sensesp::Throttle< T >::min_interval_
protected

Definition at line 43 of file throttle.h.


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