From 57aa865b2bbde306cd5942e9ad2eb62121c4b0e2 Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Tue, 17 Feb 2026 10:44:32 +0100 Subject: [PATCH] optimize one i2c write --- src/comms.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/comms.cpp b/src/comms.cpp index 7b725f3..273f51b 100644 --- a/src/comms.cpp +++ b/src/comms.cpp @@ -923,6 +923,7 @@ void tryWiFi() { } void total_pc_control() { + static uint8_t data[255]; if(i2c_pc_control_init) { Serial.write(1); Serial.write(0xff); @@ -938,13 +939,9 @@ void total_pc_control() { return; } - uint8_t *data = (uint8_t*)malloc(userlen); - if(data == NULL) return; auto len = Serial.read(data, userlen); - if(len != userlen) { - free(data); - return; // Incomplete data - } + if(len != userlen) return; + switch (data[0]) { case 0: { // Set clock if(len < 5) break; @@ -973,7 +970,7 @@ void total_pc_control() { if(len < 3 + datalen + 1) break; // Validate buffer size Wire.beginTransmission(addr); - for(int i = 0; i < datalen; i++) Wire.write(data[3+i]); + Wire.write(data + 3, len - 3); auto out = Wire.endTransmission(false); uint8_t recvlen_requested = data[3+datalen]; @@ -1018,7 +1015,6 @@ void total_pc_control() { default: break; } - free(data); Serial.flush(true); } } \ No newline at end of file