SensESP 3.0.1
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
sensesp::CurveInterpolator Class Reference

Implement a piecewise linear interpolation transform. More...

#include <sensesp/transforms/curveinterpolator.h>

Inheritance diagram for sensesp::CurveInterpolator:
[legend]

Classes

class  Sample
 

Public Member Functions

 CurveInterpolator (std::set< Sample > *defaults=NULL, const String &config_path="")
 Construct a new CurveInterpolator object.
 
void set (const float &input) override
 
CurveInterpolatorset_input_title (String input_title)
 
CurveInterpolatorset_output_title (String output_title)
 
virtual bool to_json (JsonObject &doc) override
 
virtual bool from_json (const JsonObject &doc) override
 
void clear_samples ()
 
void add_sample (const Sample &new_sample)
 
const std::set< Sample > & get_samples () const
 
- Public Member Functions inherited from sensesp::SymmetricTransform< float >
 SymmetricTransform (String config_path="")
 
- Public Member Functions inherited from sensesp::Transform< float, float >
 Transform (String config_path="")
 
Transform< float, float > * connect_from (ValueProducer< float > *producer0, ValueProducer< float > *producer1=NULL, ValueProducer< float > *producer2=NULL, ValueProducer< float > *producer3=NULL, ValueProducer< float > *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
- Public Member Functions inherited from sensesp::ValueConsumer< float >
virtual void set_input (const float &new_value)
 
void connect_from (ValueProducer< float > *producer)
 
- Public Member Functions inherited from sensesp::ValueProducer< float >
 ValueProducer ()
 
 ValueProducer (const float &initial_value)
 
virtual const float & get () const
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< float, 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.
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< float, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer *consumer)
 
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< float, typenameVConsumer::input_type >::value, VConsumer * >::type connect_to (VConsumer &consumer)
 
void emit (const float &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

std::set< Samplesamples_ {}
 
String input_title_ = "Input"
 
String output_title_ = "Output"
 
- Protected Attributes inherited from sensesp::Saveable
const String config_path_
 
- Protected Attributes inherited from sensesp::ValueProducer< float >
float output_
 

Friends

const char * ConfigSchema (const CurveInterpolator &obj)
 

Additional Inherited Members

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

Detailed Description

Implement a piecewise linear interpolation transform.

Piecewise linear functions are defined by a collection of x,y pairs, in which the x values are monotonically increasing. The y values are the corresponding values of the function at the x values. The interpolator will linearly interpolate between the y values to produce a value for any x value.

As a practical example, consider the following samples:

  • 0, 0
  • 1, 0
  • 2, 1
  • 3, 1

At different input values, the following happens:

  • At x = 0, the interpolator will return 0.
  • At x = 0.5, the interpolator will still return 0 because both adjacent samples have y = 0.
  • At x = 1.4, the adjacent outputs are 0 and 1, so the interpolator will return 0.4.
  • At x = 2.5, the interpolator will return 1.0 because the adjacent outputs are both 1.

It can be used e.g. for non-linear analog gauges such as temperature gauges and oil pressure gauges, which get their input from analog sensors that are variable resistors.

Definition at line 39 of file curveinterpolator.h.

Constructor & Destructor Documentation

◆ CurveInterpolator()

sensesp::CurveInterpolator::CurveInterpolator ( std::set< Sample > * defaults = NULL,
const String & config_path = "" )

Construct a new CurveInterpolator object.

Parameters
defaultsDefault sample values
config_path
input_titleDisplay name for the input sample values
output_titleDisplay name for the output sample values

Definition at line 23 of file curveinterpolator.cpp.

Here is the call graph for this function:

Member Function Documentation

◆ add_sample()

void sensesp::CurveInterpolator::add_sample ( const Sample & new_sample)

Definition at line 142 of file curveinterpolator.cpp.

◆ clear_samples()

void sensesp::CurveInterpolator::clear_samples ( )

Definition at line 140 of file curveinterpolator.cpp.

◆ from_json()

bool sensesp::CurveInterpolator::from_json ( const JsonObject & root)
overridevirtual

Deserializes the current object data from a JsonObject.

Reimplemented from sensesp::Serializable.

Definition at line 114 of file curveinterpolator.cpp.

◆ get_samples()

const std::set< Sample > & sensesp::CurveInterpolator::get_samples ( ) const
inline

Definition at line 81 of file curveinterpolator.h.

◆ set()

void sensesp::CurveInterpolator::set ( const float & new_value)
overridevirtual

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< float >.

Definition at line 35 of file curveinterpolator.cpp.

Here is the call graph for this function:

◆ set_input_title()

CurveInterpolator * sensesp::CurveInterpolator::set_input_title ( String input_title)
inline

Definition at line 63 of file curveinterpolator.h.

◆ set_output_title()

CurveInterpolator * sensesp::CurveInterpolator::set_output_title ( String output_title)
inline

Definition at line 67 of file curveinterpolator.h.

◆ to_json()

bool sensesp::CurveInterpolator::to_json ( JsonObject & root)
overridevirtual

Serializes the current object data into a JsonObject.

Reimplemented from sensesp::Serializable.

Definition at line 99 of file curveinterpolator.cpp.

Friends And Related Symbol Documentation

◆ ConfigSchema

const char * ConfigSchema ( const CurveInterpolator & obj)
friend

Definition at line 91 of file curveinterpolator.h.

Member Data Documentation

◆ input_title_

String sensesp::CurveInterpolator::input_title_ = "Input"
protected

Definition at line 85 of file curveinterpolator.h.

◆ output_title_

String sensesp::CurveInterpolator::output_title_ = "Output"
protected

Definition at line 86 of file curveinterpolator.h.

◆ samples_

std::set<Sample> sensesp::CurveInterpolator::samples_ {}
protected

Definition at line 84 of file curveinterpolator.h.


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