From 676c7867ca6b52f7d0212bd890262a12cead75e0 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 16 Aug 2019 18:30:45 +0200 Subject: [PATCH] Refactor Sensors available Refactor Sensors available --- sonoff/support_command.ino | 3 ++- sonoff/xsns_interface.ino | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sonoff/support_command.ino b/sonoff/support_command.ino index 5dcbf0b8c..01c365213 100644 --- a/sonoff/support_command.ino +++ b/sonoff/support_command.ino @@ -331,12 +331,13 @@ void CmndStatus(void) } if ((0 == payload) || (4 == payload)) { + char sensors[LOGSZ]; Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_JSON_PROGRAMSIZE "\":%d,\"" D_JSON_FREEMEMORY "\":%d,\"" D_JSON_HEAPSIZE "\":%d,\"" D_JSON_PROGRAMFLASHSIZE "\":%d,\"" D_JSON_FLASHSIZE "\":%d,\"" D_JSON_FLASHCHIPID "\":\"%06X\",\"" D_JSON_FLASHMODE "\":%d,\"" D_JSON_FEATURES "\":[\"%08X\",\"%08X\",\"%08X\",\"%08X\",\"%08X\",\"%08X\"],\"Sensors\":%s}}"), ESP.getSketchSize()/1024, ESP.getFreeSketchSpace()/1024, ESP.getFreeHeap()/1024, ESP.getFlashChipSize()/1024, ESP.getFlashChipRealSize()/1024, ESP.getFlashChipId(), ESP.getFlashChipMode(), - LANGUAGE_LCID, feature_drv1, feature_drv2, feature_sns1, feature_sns2, feature5, XsnsSensorsAvailable().c_str()); + LANGUAGE_LCID, feature_drv1, feature_drv2, feature_sns1, feature_sns2, feature5, XsnsSensorsAvailable(sensors)); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "4")); } diff --git a/sonoff/xsns_interface.ino b/sonoff/xsns_interface.ino index 438591129..57eaebb51 100644 --- a/sonoff/xsns_interface.ino +++ b/sonoff/xsns_interface.ino @@ -828,19 +828,19 @@ bool XsnsEnabled(uint32_t sns_index) return true; } -String XsnsSensorsAvailable() +char* XsnsSensorsAvailable(char* sensors) { - String sensors = F("["); + // Return string like [2,3,4,5,8,9,10,14,15,17,18,34] + sensors[0] = '\0'; for (uint32_t i = 0; i < sizeof(kXsnsList); i++) { #ifdef XFUNC_PTR_IN_ROM uint32_t sensorid = pgm_read_byte(kXsnsList + i); #else uint32_t sensorid = kXsnsList[i]; #endif - if (i) { sensors += F(","); } - sensors += String(sensorid); + snprintf_P(sensors, LOGSZ, PSTR("%s%s%d"), sensors, (!i) ? "[" : ",", sensorid); } - sensors += F("]"); + snprintf_P(sensors, LOGSZ, PSTR("%s]"), sensors); // Max length is about 3 x 96 < LOGSZ return sensors; }