SensESP 2.7.2
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
signalk_put_request_listener.h
Go to the documentation of this file.
1#ifndef _signalk_putrequestlistener_H_
2#define _signalk_putrequestlistener_H_
3
4#include <ArduinoJson.h>
5
6#include <set>
7
8#include "sensesp.h"
12
13namespace sensesp {
14
21class SKPutListener : virtual public Observable {
22 public:
29
30 String& get_sk_path() { return sk_path; }
31
32 virtual void parse_value(const JsonObject& put) = 0;
33
34 static const std::vector<SKPutListener*>& get_listeners() {
35 return listeners;
36 }
37
38 protected:
40
41 private:
42 static std::vector<SKPutListener*> listeners;
43 int listen_delay;
44};
45
51template <class T>
53 public:
55 if (sk_path == "") {
56 debugE(
57 "SKPutRequestListener: User has provided no sk_path to respond to.");
58 }
59 }
60
61 void parse_value(const JsonObject& put) override {
62 this->emit(put["value"].as<T>());
63 }
64};
65
70
71} // namespace sensesp
72
73#endif
Construct a new transform based on a single function.
A base class which allow observers to attach callbacks to themselves. The callbacks will be called wh...
Definition observable.h:16
An Obervable class that listens for Signal K PUT requests coming over the websocket connection and no...
static const std::vector< SKPutListener * > & get_listeners()
virtual void parse_value(const JsonObject &put)=0
An object that listens for PUT requests to come in for the specified SignalK path....
void parse_value(const JsonObject &put) override
A base class for any sensor or piece of code that outputs a value for consumption elsewhere.
void emit(T new_value)
#define debugE(fmt,...)
Definition local_debug.h:50
SKPutRequestListener< int > IntSKPutRequestListener
SKPutRequestListener< bool > BoolSKPutRequestListener
SKPutRequestListener< String > StringSKPutRequestListener
SKPutRequestListener< float > FloatSKPutRequestListener