43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "bacnet_bridge.hpp"
|
|
#include "bridge_model.hpp"
|
|
#include "modbus_bridge.hpp"
|
|
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#ifdef ESP_PLATFORM
|
|
extern "C" {
|
|
#include "esp_err.h"
|
|
}
|
|
#else
|
|
using esp_err_t = int;
|
|
#endif
|
|
|
|
struct BridgeRuntimeConfig {
|
|
std::vector<BridgeModel> models;
|
|
std::optional<ModbusBridgeConfig> modbus;
|
|
std::optional<BacnetBridgeConfig> bacnet;
|
|
DaliValue::Object metadata;
|
|
|
|
static BridgeRuntimeConfig fromJson(const DaliValue::Object& json);
|
|
DaliValue::Object toJson() const;
|
|
};
|
|
|
|
class BridgeProvisioningStore {
|
|
public:
|
|
explicit BridgeProvisioningStore(std::string nvsNamespace = "dali_bridge")
|
|
: nvsNamespace_(std::move(nvsNamespace)) {}
|
|
|
|
esp_err_t save(const BridgeRuntimeConfig& config) const;
|
|
esp_err_t load(BridgeRuntimeConfig* config) const;
|
|
esp_err_t clear() const;
|
|
esp_err_t saveObject(const char* key, const DaliValue::Object& object) const;
|
|
esp_err_t loadObject(const char* key, DaliValue::Object* object) const;
|
|
esp_err_t clearKey(const char* key) const;
|
|
|
|
private:
|
|
std::string nvsNamespace_;
|
|
}; |