Enhance DALI bridge: add BridgeOperation and BridgeDaliTarget support, refactor address resolution and provisioning methods
This commit is contained in:
@@ -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
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user