Enhance DALI bridge: add BridgeOperation and BridgeDaliTarget support, refactor address resolution and provisioning methods

This commit is contained in:
Tony
2026-05-02 21:33:57 +08:00
parent 16907857c0
commit 307c480aa0
8 changed files with 285 additions and 102 deletions
+2
View File
@@ -18,6 +18,8 @@ struct BacnetObjectBinding {
BridgeObjectType objectType = BridgeObjectType::unknown;
int objectInstance = -1;
std::string property;
BridgeOperation operation = BridgeOperation::unknown;
BridgeDaliTarget target;
};
class DaliBacnetBridge {
+2 -2
View File
@@ -55,8 +55,8 @@ class DaliBridgeEngine {
DaliBridgeResult executeResolved(const DaliBridgeRequest& request,
const BridgeModel* model,
BridgeOperation operation);
std::optional<int> resolveShortAddress(const DaliBridgeRequest& request,
const BridgeModel* model) const;
std::optional<int> resolveTargetAddress(const DaliBridgeRequest& request,
const BridgeModel* model) const;
std::optional<int> resolveRawAddress(const DaliBridgeRequest& request,
const BridgeModel* model) const;
std::optional<int> resolveRawCommand(const DaliBridgeRequest& request,
+13
View File
@@ -25,6 +25,12 @@ enum class BridgeObjectType {
multiStateValue = 9,
};
enum class BridgeDaliTargetKind {
shortAddress = 0,
group = 1,
broadcast = 2,
};
enum class BridgeOperation {
unknown = 0,
send = 1,
@@ -46,6 +52,7 @@ enum class BridgeOperation {
getEmergencyFailureStatus = 17,
startEmergencyFunctionTest = 18,
stopEmergencyTest = 19,
startEmergencyDurationTest = 20,
};
enum class BridgeValueEncoding {
@@ -80,12 +87,15 @@ struct BridgeExternalPoint {
};
struct BridgeDaliTarget {
BridgeDaliTargetKind kind = BridgeDaliTargetKind::shortAddress;
std::optional<int> shortAddress;
std::optional<int> groupAddress;
std::optional<int> rawAddress;
std::optional<int> rawCommand;
static BridgeDaliTarget fromJson(const DaliValue::Object* json);
DaliValue::Object toJson() const;
std::optional<int> logicalAddress() const;
};
struct BridgeModel {
@@ -110,6 +120,9 @@ BridgeProtocolKind bridgeProtocolKindFromString(const std::string& value);
const char* bridgeObjectTypeToString(BridgeObjectType type);
BridgeObjectType bridgeObjectTypeFromString(const std::string& value);
const char* bridgeDaliTargetKindToString(BridgeDaliTargetKind kind);
BridgeDaliTargetKind bridgeDaliTargetKindFromString(const std::string& value);
const char* bridgeOperationToString(BridgeOperation operation);
BridgeOperation bridgeOperationFromString(const std::string& value);
+3
View File
@@ -34,6 +34,9 @@ class BridgeProvisioningStore {
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_;