From 2afba01557fdf1dd2f43b631badcc6670ac31a3d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 16 Nov 2020 15:26:32 -0300 Subject: [PATCH] KNX Lib: Fix 32bits encode --- lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp b/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp index e71e5954c..270c89b64 100644 --- a/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp +++ b/lib/lib_div/esp-knx-ip-0.5.2/src/esp-knx-ip-send.cpp @@ -182,7 +182,13 @@ void ESPKNXIP::send_4byte_uint(address_t const &receiver, knx_command_type_t ct, void ESPKNXIP::send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val) { - uint8_t buf[] = {0x00, ((uint8_t *)&val)[3], ((uint8_t *)&val)[2], ((uint8_t *)&val)[1], ((uint8_t *)&val)[0]}; + union { float f; uint32_t i; } num; + num.f = val; + uint8_t buf[] = {0x00, + (uint8_t)((num.i & 0xFF000000) >> 24), + (uint8_t)((num.i & 0x00FF0000) >> 16), + (uint8_t)((num.i & 0x0000FF00) >> 8), + (uint8_t)((num.i & 0x000000FF) >> 0)}; send(receiver, ct, 5, buf); }