mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
fix: make the socket buffer big enough for the largest event
Socket events that don't fit the static buffer are logged and not sent. The state events are small (shadeState is about 400 bytes), but remoteFrame lists up to 300 pulse timings and real frames already came to 1.8-2.1 KB against the 2 KB buffer. MAX_SOCK_RESPONSE is now 4096 in SocketEmitter.h, and a static_assert next to remoteFrame fails the build if 300 pulses of 10 digits no longer fit. KNOWN_ISSUES.md closes the entry with the bounds of every event. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
29211630f2
commit
0d90544c86
4 changed files with 19 additions and 12 deletions
|
|
@ -337,6 +337,9 @@ bool Transceiver::receive(somfy_rx_t *rx) {
|
|||
return false;
|
||||
}
|
||||
void Transceiver::emitFrame(somfy_frame_t *frame, somfy_rx_t *rx) {
|
||||
// The largest socket event: every pulse as up to 10 digits and a comma,
|
||||
// plus about 300 bytes of fields and framing.
|
||||
static_assert(MAX_TIMINGS * 11 + 512 <= MAX_SOCK_RESPONSE, "remoteFrame can outgrow the socket buffer");
|
||||
if(sockEmit.activeClients(ROOM_EMIT_FRAME) > 0) {
|
||||
JsonSockEvent *json = sockEmit.beginEmit("remoteFrame");
|
||||
json->beginObject();
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ static void removeClient(uint32_t asyncId) {
|
|||
if(slots[i].asyncId == asyncId) slots[i].asyncId = 0;
|
||||
}
|
||||
|
||||
#define MAX_SOCK_RESPONSE 2048
|
||||
static char g_response[MAX_SOCK_RESPONSE];
|
||||
|
||||
bool room_t::isJoined(uint8_t num) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@
|
|||
|
||||
#define SOCK_MAX_ROOMS 1
|
||||
#define ROOM_EMIT_FRAME 0
|
||||
// The buffer every socket event is formatted into. An event that doesn't
|
||||
// fit is logged and not sent, so the largest one has to fit: see remoteFrame
|
||||
// in Transceiver.cpp.
|
||||
#define MAX_SOCK_RESPONSE 4096
|
||||
|
||||
struct room_t {
|
||||
uint8_t clients[5] = {255, 255, 255, 255, 255};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue