Refactor DALI component: remove BACnet bridge support and update related documentation

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Tony
2026-05-04 02:25:39 +08:00
parent 402d6a451b
commit fa4acef881
9 changed files with 6 additions and 181 deletions
-65
View File
@@ -1,65 +0,0 @@
#include "bacnet_bridge.hpp"
#include <utility>
DaliBacnetBridge::DaliBacnetBridge(DaliBridgeEngine& engine) : engine_(engine) {}
void DaliBacnetBridge::setConfig(const BacnetBridgeConfig& config) { config_ = config; }
const BacnetBridgeConfig& DaliBacnetBridge::config() const { return config_; }
DaliBridgeResult DaliBacnetBridge::handlePropertyWrite(BridgeObjectType objectType,
int objectInstance,
const std::string& property,
const DaliValue& value) const {
const auto binding = findObject(objectType, objectInstance, property);
DaliBridgeRequest request;
request.sequence = "bacnet-" + std::to_string(objectInstance);
request.value = value;
if (!binding.has_value()) {
DaliBridgeResult result;
result.sequence = request.sequence;
result.error = "unmapped bacnet object";
return result;
}
request.modelID = binding->modelID;
return engine_.execute(request);
}
std::optional<BacnetObjectBinding> DaliBacnetBridge::findObject(BridgeObjectType objectType,
int objectInstance,
const std::string& property) const {
for (const auto& model : engine_.listModels()) {
if (model.protocol != BridgeProtocolKind::bacnet) {
continue;
}
if (model.external.objectType != objectType) {
continue;
}
if (model.external.objectInstance.value_or(-1) != objectInstance) {
continue;
}
if (!model.external.property.empty() && model.external.property != property) {
continue;
}
return BacnetObjectBinding{model.id, objectType, objectInstance, property,
model.operation, model.dali};
}
return std::nullopt;
}
std::vector<BacnetObjectBinding> DaliBacnetBridge::describeObjects() const {
std::vector<BacnetObjectBinding> bindings;
for (const auto& model : engine_.listModels()) {
if (model.protocol != BridgeProtocolKind::bacnet || !model.external.objectInstance.has_value()) {
continue;
}
bindings.push_back(BacnetObjectBinding{model.id, model.external.objectType,
model.external.objectInstance.value(),
model.external.property, model.operation,
model.dali});
}
return bindings;
}
-22
View File
@@ -101,26 +101,6 @@ esp_err_t readString(nvs_handle_t handle, const char* key, std::string* value) {
return ESP_OK;
}
std::optional<BacnetBridgeConfig> bacnetFromJson(const DaliValue* value) {
if (value == nullptr || value->asObject() == nullptr) {
return std::nullopt;
}
const auto& json = *value->asObject();
BacnetBridgeConfig config;
config.deviceInstance = static_cast<uint32_t>(getObjectInt(json, "deviceInstance").value_or(4194303));
config.localAddress = getObjectString(json, "localAddress").value_or("");
config.udpPort = static_cast<uint16_t>(getObjectInt(json, "udpPort").value_or(47808));
return config;
}
DaliValue bacnetToJson(const BacnetBridgeConfig& config) {
DaliValue::Object out;
out["deviceInstance"] = static_cast<int64_t>(config.deviceInstance);
out["localAddress"] = config.localAddress;
out["udpPort"] = static_cast<int>(config.udpPort);
return DaliValue(std::move(out));
}
esp_err_t saveJsonObject(const std::string& nvs_namespace, const char* key,
const DaliValue::Object& object) {
if (key == nullptr || key[0] == '\0') {
@@ -227,7 +207,6 @@ BridgeRuntimeConfig BridgeRuntimeConfig::fromJson(const DaliValue::Object& json)
}
}
}
config.bacnet = bacnetFromJson(getObjectValue(json, "bacnet"));
if (const auto* metadata = getObjectValue(json, "meta")) {
if (const auto* object = metadata->asObject()) {
config.metadata = *object;
@@ -244,7 +223,6 @@ DaliValue::Object BridgeRuntimeConfig::toJson() const {
modelsValue.emplace_back(model.toJson());
}
out["models"] = std::move(modelsValue);
if (bacnet.has_value()) out["bacnet"] = bacnetToJson(bacnet.value());
if (!metadata.empty()) out["meta"] = metadata;
return out;
}