SensESP 2.7.2
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, String config_path="")
 Construct a new CurveInterpolator object.
 
void set_input (float input, uint8_t input_channel=0) override
 
CurveInterpolatorset_input_title (String input_title)
 
CurveInterpolatorset_output_title (String output_title)
 
virtual void get_configuration (JsonObject &doc) override
 
virtual bool set_configuration (const JsonObject &config) override
 
virtual String get_config_schema () 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< C, P >
 Transform (String config_path="")
 
Transform< C, P > * connect_from (ValueProducer< P > *producer0, ValueProducer< P > *producer1=NULL, ValueProducer< P > *producer2=NULL, ValueProducer< P > *producer3=NULL, ValueProducer< P > *producer4=NULL)
 
- Public Member Functions inherited from sensesp::TransformBase
 TransformBase (String config_path="")
 
- Public Member Functions inherited from sensesp::Configurable
 Configurable (String config_path="", String description="", int sort_order=1000)
 
String get_description ()
 
void set_description (String description)
 Set the description of the Configurable.
 
int get_sort_order ()
 
void set_sort_order (int sort_order)
 
virtual void save_configuration ()
 
- Public Member Functions inherited from sensesp::Startable
 Startable (int priority=0)
 
virtual void start ()
 
const int get_start_priority ()
 
void set_start_priority (int priority)
 
- Public Member Functions inherited from sensesp::ValueConsumer< C >
virtual void set_input (C new_value, uint8_t input_channel=0)
 
void connect_from (ValueProducer< C > *producer, uint8_t input_channel=0)
 
- Public Member Functions inherited from sensesp::ValueProducer< P >
 ValueProducer ()
 
virtual const Pget () const
 
void connect_to (ValueConsumer< P > *consumer, uint8_t input_channel=0)
 
void connect_to (ValueConsumer< CT > *consumer, uint8_t input_channel=0)
 Connect a producer to a consumer of a different type.
 
Transform< P, T2 > * connect_to (Transform< P, T2 > *consumer_producer, uint8_t input_channel=0)
 
Transform< TT, T2 > * connect_to (Transform< TT, T2 > *consumer_producer, uint8_t input_channel=0)
 Connect a producer to a transform with a different input type.
 
void emit (P 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::Configurable
String description_ = ""
 
int sort_order_ = 1000
 
- Protected Attributes inherited from sensesp::ValueProducer< P >
P output
 

Additional Inherited Members

- Static Public Member Functions inherited from sensesp::TransformBase
static const std::set< TransformBase * > & get_transforms ()
 
- Static Public Member Functions inherited from sensesp::Startable
static void start_all ()
 
- Public Attributes inherited from sensesp::Configurable
const String config_path_
 
- Protected Member Functions inherited from sensesp::Configurable
virtual void load_configuration ()
 

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 35 of file curveinterpolator.h.

Constructor & Destructor Documentation

◆ CurveInterpolator()

sensesp::CurveInterpolator::CurveInterpolator ( std::set< Sample > *  defaults = NULL,
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 133 of file curveinterpolator.cpp.

◆ clear_samples()

void sensesp::CurveInterpolator::clear_samples ( )

Definition at line 131 of file curveinterpolator.cpp.

◆ get_config_schema()

String sensesp::CurveInterpolator::get_config_schema ( )
overridevirtual

Returns a configuration schema that specifies the key/value pairs that can be expected when calling get_configuration(), or are expected by set_configuration(). The schema will be in JSON Schema format

See also
https://json-schema.org

Reimplemented from sensesp::Configurable.

Definition at line 99 of file curveinterpolator.cpp.

◆ get_configuration()

void sensesp::CurveInterpolator::get_configuration ( JsonObject configObject)
overridevirtual

Returns the current configuration data as a JsonObject. In general, the current state of local member variables are saved to a new object created with JsonDocument::as<JsonObject>() and returned.

Reimplemented from sensesp::Configurable.

Definition at line 71 of file curveinterpolator.cpp.

◆ get_samples()

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

Definition at line 77 of file curveinterpolator.h.

◆ set_configuration()

bool sensesp::CurveInterpolator::set_configuration ( const JsonObject config)
overridevirtual

Sets the current state of local member variables using the data stored in config.

Reimplemented from sensesp::Configurable.

Definition at line 106 of file curveinterpolator.cpp.

◆ set_input()

void sensesp::CurveInterpolator::set_input ( float  input,
uint8_t  input_channel = 0 
)
override

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 58 of file curveinterpolator.h.

◆ set_output_title()

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

Definition at line 62 of file curveinterpolator.h.

Member Data Documentation

◆ input_title_

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

Definition at line 81 of file curveinterpolator.h.

◆ output_title_

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

Definition at line 82 of file curveinterpolator.h.

◆ samples_

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

Definition at line 80 of file curveinterpolator.h.


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