21afc6b942
- Added `bridge.cpp` to handle DALI bridge operations including model management, command execution, and response formatting. - Introduced `bridge_model.cpp` for defining bridge models, value transformations, and JSON serialization/deserialization. - Created `bridge_provisioning.cpp` for managing bridge configuration storage and retrieval using NVS on ESP platform. - Enhanced `gateway_cloud.cpp` to integrate DALI bridge requests and responses with cloud communication. - Introduced `modbus_bridge.cpp` to handle Modbus-specific operations and register management. - Implemented utility functions for converting between DaliValue and cJSON formats. - Added error handling and metadata management in bridge responses.
36 lines
831 B
C++
36 lines
831 B
C++
#pragma once
|
|
|
|
#include "bridge.hpp"
|
|
|
|
#include <cstdint>
|
|
#include <optional>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
struct ModbusBridgeConfig {
|
|
std::string transport = "tcp";
|
|
std::string host;
|
|
uint16_t port = 502;
|
|
uint8_t unitID = 1;
|
|
};
|
|
|
|
struct ModbusRegisterBinding {
|
|
std::string modelID;
|
|
int registerAddress = -1;
|
|
};
|
|
|
|
class DaliModbusBridge {
|
|
public:
|
|
explicit DaliModbusBridge(DaliBridgeEngine& engine);
|
|
|
|
void setConfig(const ModbusBridgeConfig& config);
|
|
const ModbusBridgeConfig& config() const;
|
|
|
|
DaliBridgeResult handleHoldingRegisterWrite(int registerAddress, int value) const;
|
|
std::optional<ModbusRegisterBinding> findHoldingRegister(int registerAddress) const;
|
|
std::vector<ModbusRegisterBinding> describeHoldingRegisters() const;
|
|
|
|
private:
|
|
DaliBridgeEngine& engine_;
|
|
ModbusBridgeConfig config_;
|
|
}; |