feat(gateway): enhance DALI and KNX integration with tunnel confirmation handling and improved message routing

Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
Tony
2026-05-16 09:34:14 +08:00
parent 82142dd46c
commit 77fe8c1b02
5 changed files with 246 additions and 47 deletions
@@ -252,11 +252,14 @@ class GatewayKnxTpIpRouter {
uint8_t connection_type{0};
uint8_t received_sequence{255};
uint8_t send_sequence{0};
uint8_t last_tunnel_confirmation_sequence{0};
uint16_t individual_address{0};
int tcp_sock{-1};
TickType_t last_activity_tick{0};
::sockaddr_in control_remote{};
::sockaddr_in data_remote{};
std::vector<uint8_t> last_received_cemi;
std::vector<uint8_t> last_tunnel_confirmation_packet;
};
static void TaskEntry(void* arg);
@@ -297,7 +300,7 @@ class GatewayKnxTpIpRouter {
void sendSecureSessionStatus(uint8_t status, const ::sockaddr_in& remote);
void sendTunnelIndication(const uint8_t* data, size_t len);
void sendTunnelIndicationToClient(TunnelClient& client, const uint8_t* data, size_t len);
void sendCemiFrameToClient(TunnelClient& client, uint16_t service,
bool sendCemiFrameToClient(TunnelClient& client, uint16_t service,
const uint8_t* data, size_t len);
void sendConnectionStateResponse(uint8_t channel_id, uint8_t status,
const ::sockaddr_in& remote);