feat(gateway): add cloud integration for KNX and DALI with configurable transport options
Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
@@ -268,6 +268,13 @@ class GatewayKnxTpIpRouter {
|
||||
const uint8_t* data,
|
||||
size_t len)>;
|
||||
using RoutingSequenceStoreHandler = std::function<void(uint64_t sequence)>;
|
||||
using CloudCemiPublisher = std::function<void(const uint8_t* data, size_t len)>;
|
||||
|
||||
struct CloudCemiStats {
|
||||
bool enabled{false};
|
||||
uint64_t uplink_frames{0};
|
||||
uint64_t downlink_frames{0};
|
||||
};
|
||||
|
||||
GatewayKnxTpIpRouter(GatewayKnxBridge& bridge,
|
||||
std::string openknx_namespace = "openknx");
|
||||
@@ -279,7 +286,10 @@ class GatewayKnxTpIpRouter {
|
||||
void setGroupObjectWriteHandler(GroupObjectWriteHandler handler);
|
||||
void setOamIpSecureCredentials(const GatewayKnxIpSecureCredentialMaterial& credentials);
|
||||
void setOamIpSecureRoutingSequenceStoreHandler(RoutingSequenceStoreHandler handler);
|
||||
void setCloudCemiPublisher(CloudCemiPublisher publisher);
|
||||
const GatewayKnxConfig& config() const;
|
||||
bool injectCloudCemiFrame(const uint8_t* data, size_t len);
|
||||
CloudCemiStats cloudCemiStats() const;
|
||||
bool tpUartOnline() const;
|
||||
bool programmingMode();
|
||||
esp_err_t setProgrammingMode(bool enabled);
|
||||
@@ -458,6 +468,7 @@ class GatewayKnxTpIpRouter {
|
||||
size_t suppress_routing_echo_len = 0);
|
||||
bool handleOpenKnxBusFrame(const uint8_t* data, size_t len);
|
||||
bool transmitOpenKnxTpFrame(const uint8_t* data, size_t len);
|
||||
void publishCloudCemiFrame(const uint8_t* data, size_t len);
|
||||
void selectOpenKnxNetworkInterface(const ::sockaddr_in& remote);
|
||||
bool routeOpenKnxGroupWrite(const uint8_t* data, size_t len, const char* context);
|
||||
bool emitOpenKnxGroupValue(uint16_t group_object_number, const uint8_t* data, size_t len);
|
||||
@@ -476,6 +487,7 @@ class GatewayKnxTpIpRouter {
|
||||
GroupWriteHandler group_write_handler_;
|
||||
GroupObjectWriteHandler group_object_write_handler_;
|
||||
RoutingSequenceStoreHandler routing_sequence_store_handler_;
|
||||
CloudCemiPublisher cloud_cemi_publisher_;
|
||||
std::string openknx_namespace_;
|
||||
GatewayKnxConfig config_;
|
||||
std::unique_ptr<openknx::EtsDeviceRuntime> ets_device_;
|
||||
@@ -505,6 +517,8 @@ class GatewayKnxTpIpRouter {
|
||||
bool tp_uart_online_{false};
|
||||
bool commissioning_only_{false};
|
||||
std::atomic_bool openknx_configured_{false};
|
||||
std::atomic<uint64_t> cloud_cemi_uplink_frames_{0};
|
||||
std::atomic<uint64_t> cloud_cemi_downlink_frames_{0};
|
||||
bool programming_button_last_pressed_{false};
|
||||
bool programming_led_state_{false};
|
||||
TickType_t programming_button_last_toggle_tick_{0};
|
||||
|
||||
Reference in New Issue
Block a user