Add diagnostic bit support to Gateway Modbus
- Introduced new enum value `kShortDiagnosticBit` to `GatewayModbusGeneratedKind`. - Enhanced `GatewayModbusPoint` and `GatewayModbusPointBinding` structures to include diagnostic snapshot, boolean key, and device type. - Added new diagnostic bit specifications and updated the corresponding arrays for generated discrete inputs and holding registers. - Implemented `addGeneratedDiagnosticPoint` function to handle the creation of diagnostic points. - Updated `rebuildMap` method to include generated diagnostic points during the map rebuilding process. Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
|
||||
#include "bridge.hpp"
|
||||
|
||||
#include <cstdint>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
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<int> 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<GatewayBacnetModelBinding> findObject(BridgeObjectType object_type,
|
||||
int object_instance,
|
||||
const std::string& property) const;
|
||||
std::vector<GatewayBacnetModelBinding> describeObjects() const;
|
||||
|
||||
private:
|
||||
DaliBridgeResult executeBinding(const GatewayBacnetModelBinding& binding,
|
||||
const std::string& sequence,
|
||||
const DaliValue* value) const;
|
||||
|
||||
DaliBridgeEngine& engine_;
|
||||
GatewayBacnetBridgeConfig config_;
|
||||
};
|
||||
|
||||
} // namespace gateway
|
||||
Reference in New Issue
Block a user