SensESP 2.7.2
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
curveinterpolator.h
Go to the documentation of this file.
1#ifndef _CurveInterpolator_H_
2#define _CurveInterpolator_H_
3
4#include "transform.h"
5
6namespace sensesp {
7
36 public:
37 class Sample {
38 public:
39 float input;
40 float output;
41
42 Sample();
43 Sample(float input, float output);
45
46 friend bool operator<(const Sample& lhs, const Sample& rhs) {
47 return lhs.input < rhs.input;
48 }
49 };
50
51 public:
52 CurveInterpolator(std::set<Sample>* defaults = NULL, String config_path = "");
53
54 // Set and retrieve the transformed value
55 void set_input(float input, uint8_t input_channel = 0) override;
56
57 // Web UI configuration methods
66
67 // For reading and writing the configuration of this transformation
68 virtual void get_configuration(JsonObject& doc) override;
69 virtual bool set_configuration(const JsonObject& config) override;
70 virtual String get_config_schema() override;
71
72 // For manually adding sample points
73 void clear_samples();
74
75 void add_sample(const Sample& new_sample);
76
77 const std::set<Sample>& get_samples() const { return samples_; }
78
79 protected:
80 std::set<Sample> samples_;
83};
84
85} // namespace sensesp
86
87#endif
friend bool operator<(const Sample &lhs, const Sample &rhs)
Implement a piecewise linear interpolation transform.
virtual String get_config_schema() override
CurveInterpolator * set_input_title(String input_title)
virtual bool set_configuration(const JsonObject &config) override
CurveInterpolator * set_output_title(String output_title)
virtual void get_configuration(JsonObject &doc) override
void set_input(float input, uint8_t input_channel=0) override
void add_sample(const Sample &new_sample)
const std::set< Sample > & get_samples() const
Construct a new transform based on a single function.