ESPHome 2025.10.0-dev
Loading...
Searching...
No Matches
preferences.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_HOST
4
6#include <map>
7
8namespace esphome {
9namespace host {
10
12 public:
13 explicit HostPreferenceBackend(uint32_t key) { this->key_ = key; }
14
15 bool save(const uint8_t *data, size_t len) override;
16 bool load(uint8_t *data, size_t len) override;
17
18 protected:
19 uint32_t key_{};
20};
21
23 public:
24 bool sync() override;
25 bool reset() override;
26
27 ESPPreferenceObject make_preference(size_t length, uint32_t type, bool in_flash) override;
28 ESPPreferenceObject make_preference(size_t length, uint32_t type) override {
29 return make_preference(length, type, false);
30 }
31
32 bool save(uint32_t key, const uint8_t *data, size_t len) {
33 if (len > 255)
34 return false;
35 this->setup_();
36 std::vector vec(data, data + len);
37 this->data[key] = vec;
38 return true;
39 }
40
41 bool load(uint32_t key, uint8_t *data, size_t len) {
42 if (len > 255)
43 return false;
44 this->setup_();
45 auto it = this->data.find(key);
46 if (it == this->data.end())
47 return false;
48 const auto &vec = it->second;
49 if (vec.size() != len)
50 return false;
51 memcpy(data, vec.data(), len);
52 return true;
53 }
54
55 protected:
56 void setup_();
58 std::string filename_{};
59 std::map<uint32_t, std::vector<uint8_t>> data{};
60};
62extern HostPreferences *host_preferences; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
63
64} // namespace host
65} // namespace esphome
66
67#endif // USE_HOST
bool save(const uint8_t *data, size_t len) override
bool load(uint8_t *data, size_t len) override
bool load(uint32_t key, uint8_t *data, size_t len)
Definition preferences.h:41
ESPPreferenceObject make_preference(size_t length, uint32_t type) override
Definition preferences.h:28
bool save(uint32_t key, const uint8_t *data, size_t len)
Definition preferences.h:32
std::map< uint32_t, std::vector< uint8_t > > data
Definition preferences.h:59
ESPPreferenceObject make_preference(size_t length, uint32_t type, bool in_flash) override
uint16_t type
void setup_preferences()
HostPreferences * host_preferences
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
std::string size_t len
Definition helpers.h:291
uint16_t length
Definition tt21100.cpp:0