From ffb2bc8749d025348f172e8b434e5dcce5144e31 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Thu, 27 Nov 2025 17:38:51 +0100 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20Fix=20socket=20deadlock?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/include/communication/comm_base.hpp | 6 +++--- esp32/include/communication/websocket_adapter.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/esp32/include/communication/comm_base.hpp b/esp32/include/communication/comm_base.hpp index cafd346..b1ed5b0 100644 --- a/esp32/include/communication/comm_base.hpp +++ b/esp32/include/communication/comm_base.hpp @@ -38,15 +38,15 @@ class CommAdapterBase { array.add(event); array.add(payload); - // TODO: Only send to subscribed - #if USE_MSGPACK std::string bin; serializeMsgPack(doc, bin); - send(reinterpret_cast(bin.data()), bin.size(), -1); // TODO: Make CID dynamic + xSemaphoreGive(mutex_); + send(reinterpret_cast(bin.data()), bin.size(), -1); #else String out; serializeJson(doc, out); + xSemaphoreGive(mutex_); send(out.c_str(), -1); #endif } diff --git a/esp32/include/communication/websocket_adapter.h b/esp32/include/communication/websocket_adapter.h index af151e6..da2cb1b 100644 --- a/esp32/include/communication/websocket_adapter.h +++ b/esp32/include/communication/websocket_adapter.h @@ -10,7 +10,7 @@ #include -class Websocket : CommAdapterBase { +class Websocket : public CommAdapterBase { public: Websocket(PsychicHttpServer &server, const char *route = "/api/ws"); From d43e98d06b3eeb23870d81d07b3aa7ba88d54d40 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Thu, 27 Nov 2025 18:44:36 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=90=9B=20Imu=20temp=20in=20message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/lib/stores/imu.ts | 2 +- app/src/lib/types/models.ts | 2 +- esp32/src/main.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/lib/stores/imu.ts b/app/src/lib/stores/imu.ts index 3bf1491..7ce44ae 100644 --- a/app/src/lib/stores/imu.ts +++ b/app/src/lib/stores/imu.ts @@ -16,7 +16,7 @@ export const imu = (() => { const addData = (content: IMUMsg) => { update(data => { - if (content.imu && content.imu[3]) { + if (content.imu && content.imu[4]) { data.x = [...data.x, content.imu[0]].slice(-maxIMUData) data.y = [...data.y, content.imu[1]].slice(-maxIMUData) data.z = [...data.z, content.imu[2]].slice(-maxIMUData) diff --git a/app/src/lib/types/models.ts b/app/src/lib/types/models.ts index 85ab164..754b9fc 100644 --- a/app/src/lib/types/models.ts +++ b/app/src/lib/types/models.ts @@ -155,7 +155,7 @@ export type IMU = { } export type IMUMsg = { - imu: [number, number, number, boolean] + imu: [number, number, number, number, boolean] mag: [number, number, number, number, boolean] bmp: [number, number, number, boolean] } diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index 7dad36a..5c7d1b8 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -132,7 +132,7 @@ void IRAM_ATTR SpotControlLoopEntry(void *) { #if FT_ENABLED(USE_WS2812) ledService.loop(); #endif - EXECUTE_EVERY_N_MS(250, [&]() { + EXECUTE_EVERY_N_MS(250, { JsonDocument doc; JsonVariant results = doc.to(); peripherals.getIMUResult(results);