SensESP 3.3.0
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
frequency.cpp
Go to the documentation of this file.
1#include "frequency.h"
2
3namespace sensesp {
4
5// Frequency
6
7Frequency::Frequency(float multiplier, const String& config_path)
8 : Transform<int, float>(config_path),
9 multiplier_{multiplier},
10 last_update_(millis()) {
11 load();
12}
13
14void Frequency::set(const int& input) {
15 unsigned long const cur_millis = millis();
16 if (first_call_) {
17 first_call_ = false;
18 last_update_ = cur_millis;
19 return;
20 }
21 unsigned long const elapsed_millis = cur_millis - last_update_;
22 last_update_ = cur_millis;
23 this->emit(multiplier_ * input / (elapsed_millis / 1000.));
24}
25
26bool Frequency::to_json(JsonObject& root) {
27 root["multiplier"] = multiplier_;
28 return true;
29}
30
31bool Frequency::from_json(const JsonObject& config) {
32 String const expected[] = {"multiplier"};
33 for (auto str : expected) {
34 if (!config[str].is<JsonVariant>()) {
35 return false;
36 }
37 }
38 multiplier_ = config["multiplier"];
39 return true;
40}
41
42const String ConfigSchema(const Frequency& obj) {
43 return R"###({"type":"object","properties":{"multiplier":{"title":"Multiplier","type":"number"}}})###";
44}
45
46} // namespace sensesp
virtual bool load() override
Load and populate the object from a persistent storage.
Definition saveable.cpp:8
Transforms its input into frequency (Hz: cycles per second).
Definition frequency.h:22
virtual bool from_json(const JsonObject &config) override
Definition frequency.cpp:31
virtual void set(const int &input) override
Definition frequency.cpp:14
virtual bool to_json(JsonObject &root) override
Definition frequency.cpp:26
Frequency(float multiplier=1, const String &config_path="")
Definition frequency.cpp:7
Transform(String config_path="")
Definition transform.h:55
void emit(const float &new_value)
const String ConfigSchema(const SmartSwitchController &obj)