#pragma once #include "bridge.hpp" #include #include #include #include namespace gateway { struct GatewayBacnetBridgeConfig { uint32_t deviceInstance{4194303}; std::string localAddress; uint16_t udpPort{47808}; }; struct GatewayBacnetModelBinding { std::string modelID; BridgeObjectType objectType{BridgeObjectType::unknown}; int objectInstance{-1}; std::string property; BridgeOperation operation{BridgeOperation::unknown}; BridgeDaliTarget target; std::optional bitIndex; }; class GatewayBacnetBridgeAdapter { public: explicit GatewayBacnetBridgeAdapter(DaliBridgeEngine& engine); void setConfig(const GatewayBacnetBridgeConfig& config); const GatewayBacnetBridgeConfig& config() const; DaliBridgeResult handlePropertyWrite(BridgeObjectType object_type, int object_instance, const std::string& property, const DaliValue& value) const; DaliBridgeResult readProperty(BridgeObjectType object_type, int object_instance, const std::string& property) const; std::optional findObject(BridgeObjectType object_type, int object_instance, const std::string& property) const; std::vector describeObjects() const; private: DaliBridgeResult executeBinding(const GatewayBacnetModelBinding& binding, const std::string& sequence, const DaliValue* value) const; DaliBridgeEngine& engine_; GatewayBacnetBridgeConfig config_; }; } // namespace gateway