44 lines
1.3 KiB
C++
44 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "bridge.hpp"
|
|
|
|
#include <cstdint>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
struct BacnetBridgeConfig {
|
|
uint32_t deviceInstance = 4194303;
|
|
std::string localAddress;
|
|
uint16_t udpPort = 47808;
|
|
};
|
|
|
|
struct BacnetObjectBinding {
|
|
std::string modelID;
|
|
BridgeObjectType objectType = BridgeObjectType::unknown;
|
|
int objectInstance = -1;
|
|
std::string property;
|
|
BridgeOperation operation = BridgeOperation::unknown;
|
|
BridgeDaliTarget target;
|
|
};
|
|
|
|
class DaliBacnetBridge {
|
|
public:
|
|
explicit DaliBacnetBridge(DaliBridgeEngine& engine);
|
|
|
|
void setConfig(const BacnetBridgeConfig& config);
|
|
const BacnetBridgeConfig& config() const;
|
|
|
|
DaliBridgeResult handlePropertyWrite(BridgeObjectType objectType,
|
|
int objectInstance,
|
|
const std::string& property,
|
|
const DaliValue& value) const;
|
|
std::optional<BacnetObjectBinding> findObject(BridgeObjectType objectType,
|
|
int objectInstance,
|
|
const std::string& property) const;
|
|
std::vector<BacnetObjectBinding> describeObjects() const;
|
|
|
|
private:
|
|
DaliBridgeEngine& engine_;
|
|
BacnetBridgeConfig config_;
|
|
}; |