SensESP 2.7.2
Universal Signal K sensor toolkit ESP32
Loading...
Searching...
No Matches
signalk_delta_queue.h
Go to the documentation of this file.
1#ifndef _signalk_delta_queue_H_
2#define _signalk_delta_queue_H_
3
4#include <ArduinoJson.h>
5
6#include <list>
7
9
10namespace sensesp {
11
19class SKDeltaQueue : public Startable {
20 public:
21 SKDeltaQueue(unsigned int max_buffer_size = 20);
22 void append(const String val);
23 bool data_available();
24 void get_delta(String& output);
25
26 void connect_emitters();
27
32 this->meta_sent_ = false;
34 }
35
36 virtual void start() override;
37
38 bool take_semaphore(unsigned long int timeout_ms = 0);
39 void release_semaphore();
40
41 private:
42 unsigned int max_buffer_size;
43 std::list<String> buffer;
44 bool meta_sent_;
45
46 unsigned int get_doc_size_estimate();
47 unsigned int get_metadata_size_estimate();
48
49 std::size_t get_buffer_size() {
50 std::size_t size;
52 size = buffer.size();
54 return size;
55 }
56
57 // Adds Signal K meta data to the specified document
58 void add_metadata(JsonArray updates);
59
60 SemaphoreHandle_t semaphore_ = NULL;
61};
62
63} // namespace sensesp
64
65#endif
Construct a new transform based on a single function.
Signal K delta queue.
void get_delta(String &output)
virtual void start() override
bool take_semaphore(unsigned long int timeout_ms=0)
void append(const String val)
Automatic calling of the start() method at startup.
Definition startable.h:20