mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-25 20:26:41 +00:00
Memory optimizations
This commit is contained in:
parent
0d34efbd89
commit
1b809c3ab5
@ -16,14 +16,8 @@
|
|||||||
#include "hasp_mqtt.h"
|
#include "hasp_mqtt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void dispatchPrintln(String header, String & data)
|
inline void dispatchPrintln(String header, String & data)
|
||||||
{
|
{
|
||||||
/* String message((char *)0);
|
|
||||||
message.reserve(128);
|
|
||||||
message = header;
|
|
||||||
message += F(": ");
|
|
||||||
message += data;
|
|
||||||
debugPrintln(message); */
|
|
||||||
Log.notice(F("%s: %s"), header.c_str(), data.c_str());
|
Log.notice(F("%s: %s"), header.c_str(), data.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,7 +43,7 @@ void dispatchLoop()
|
|||||||
void dispatchStatusUpdate()
|
void dispatchStatusUpdate()
|
||||||
{
|
{
|
||||||
#if HASP_USE_MQTT
|
#if HASP_USE_MQTT
|
||||||
mqttStatusUpdate();
|
mqtt_send_statusupdate();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,13 +89,13 @@ void dispatchButtonAttribute(String & strTopic, const char * payload)
|
|||||||
int objid = strObjId.toInt();
|
int objid = strObjId.toInt();
|
||||||
|
|
||||||
if(pageid >= 0 && pageid <= 255 && objid >= 0 && objid <= 255) {
|
if(pageid >= 0 && pageid <= 255 && objid >= 0 && objid <= 255) {
|
||||||
haspProcessAttribute((uint8_t)pageid, (uint8_t)objid, strAttr, payload);
|
hasp_process_attribute((uint8_t)pageid, (uint8_t)objid, strAttr, payload);
|
||||||
} // valid page
|
} // valid page
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// objectattribute=value
|
// objectattribute=value
|
||||||
void dispatchAttribute(String & strTopic, const char * payload)
|
void dispatchAttribute(String strTopic, const char * payload)
|
||||||
{
|
{
|
||||||
if(strTopic.startsWith("p[")) {
|
if(strTopic.startsWith("p[")) {
|
||||||
dispatchButtonAttribute(strTopic, payload);
|
dispatchButtonAttribute(strTopic, payload);
|
||||||
@ -143,7 +137,7 @@ void dispatchPage(String strPageid)
|
|||||||
strPage.reserve(128);
|
strPage.reserve(128);
|
||||||
strPage = haspGetPage();
|
strPage = haspGetPage();
|
||||||
#if HASP_USE_MQTT
|
#if HASP_USE_MQTT
|
||||||
mqttSendState("page", strPage.c_str());
|
mqtt_send_state(F("page"), strPage.c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,7 +161,7 @@ void dispatchDim(String strDimLevel)
|
|||||||
// Return the current state
|
// Return the current state
|
||||||
String strPayload = String(guiGetDim());
|
String strPayload = String(guiGetDim());
|
||||||
#if HASP_USE_MQTT
|
#if HASP_USE_MQTT
|
||||||
mqttSendState("dim", strPayload.c_str());
|
mqtt_send_state(F("dim"), strPayload.c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,7 +176,7 @@ void dispatchBacklight(String strPayload)
|
|||||||
// Return the current state
|
// Return the current state
|
||||||
strPayload = getOnOff(guiGetBacklight());
|
strPayload = getOnOff(guiGetBacklight());
|
||||||
#if HASP_USE_MQTT
|
#if HASP_USE_MQTT
|
||||||
mqttSendState("light", strPayload.c_str());
|
mqtt_send_state(F("light"), strPayload.c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,7 +198,7 @@ void dispatchCommand(String cmnd)
|
|||||||
// guiTakeScreenshot("/screenhot.bmp");
|
// guiTakeScreenshot("/screenhot.bmp");
|
||||||
} else if(cmnd == F("reboot") || cmnd == F("restart")) {
|
} else if(cmnd == F("reboot") || cmnd == F("restart")) {
|
||||||
dispatchReboot(true);
|
dispatchReboot(true);
|
||||||
} else if(cmnd == "" || cmnd == F("statusupdate")) {
|
} else if(cmnd == F("") || cmnd == F("statusupdate")) {
|
||||||
dispatchStatusUpdate();
|
dispatchStatusUpdate();
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -234,13 +228,13 @@ void dispatchJson(char * payload)
|
|||||||
strPayload.remove(strPayload.length() - 2, 2);
|
strPayload.remove(strPayload.length() - 2, 2);
|
||||||
strPayload.concat("]");
|
strPayload.concat("]");
|
||||||
}*/
|
}*/
|
||||||
|
size_t maxsize = (128u * ((strlen(payload) / 128) + 1)) + 256;
|
||||||
DynamicJsonDocument haspCommands(MQTT_MAX_PACKET_SIZE + 512);
|
DynamicJsonDocument haspCommands(maxsize);
|
||||||
DeserializationError jsonError = deserializeJson(haspCommands, payload);
|
DeserializationError jsonError = deserializeJson(haspCommands, payload);
|
||||||
haspCommands.shrinkToFit();
|
// haspCommands.shrinkToFit();
|
||||||
|
|
||||||
if(jsonError) { // Couldn't parse incoming JSON command
|
if(jsonError) { // Couldn't parse incoming JSON command
|
||||||
Log.warning(F("JSON: Failed to parse incoming JSON command with error: "), jsonError.c_str());
|
Log.warning(F("JSON: Failed to parse incoming JSON command with error: %s"), jsonError.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -250,15 +244,18 @@ void dispatchJson(char * payload)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispatchJsonl(char * strPayload)
|
void dispatchJsonl(char * payload)
|
||||||
{
|
{
|
||||||
DynamicJsonDocument config(256);
|
DynamicJsonDocument config(256);
|
||||||
|
|
||||||
String output((char *)0);
|
String output((char *)0);
|
||||||
output.reserve(MQTT_MAX_PACKET_SIZE + 256);
|
|
||||||
|
|
||||||
StringStream stream((String &)output);
|
StringStream stream((String &)output);
|
||||||
stream.print(strPayload);
|
|
||||||
|
size_t maxsize = (128u * ((strlen(payload) / 128) + 1));
|
||||||
|
Log.verbose(F("CMND: payload %u => reserve %u"), strlen(payload), (128u * ((strlen(payload) / 128) + 1)));
|
||||||
|
|
||||||
|
output.reserve((128u * ((strlen(payload) / 128) + 1)));
|
||||||
|
stream.print(payload);
|
||||||
|
|
||||||
while(deserializeJson(config, stream) == DeserializationError::Ok) {
|
while(deserializeJson(config, stream) == DeserializationError::Ok) {
|
||||||
serializeJson(config, Serial);
|
serializeJson(config, Serial);
|
||||||
@ -267,10 +264,10 @@ void dispatchJsonl(char * strPayload)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispatchIdle(const __FlashStringHelper * state)
|
void dispatchIdle(const char * state)
|
||||||
{
|
{
|
||||||
#if HASP_USE_MQTT
|
#if HASP_USE_MQTT
|
||||||
mqttSendState(String(F("idle")).c_str(), String(state).c_str());
|
mqtt_send_state(F("idle"), state);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,11 +288,9 @@ void dispatchReboot(bool saveConfig)
|
|||||||
delay(5000);
|
delay(5000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dispatchButton(uint8_t id, char * event)
|
void dispatch_button(uint8_t id, const char * event)
|
||||||
{
|
{
|
||||||
char buffer[128];
|
|
||||||
snprintf_P(buffer, sizeof(buffer), PSTR("INPUT%d"), id);
|
|
||||||
#if HASP_USE_MQTT
|
#if HASP_USE_MQTT
|
||||||
mqttSendState(buffer, event);
|
mqtt_send_input(id, event);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
void dispatchSetup(void);
|
void dispatchSetup(void);
|
||||||
void dispatchLoop(void);
|
void dispatchLoop(void);
|
||||||
|
|
||||||
void dispatchAttribute(String & strTopic, const char * strPayload);
|
void dispatchAttribute(String strTopic, const char * strPayload);
|
||||||
void dispatchCommand(String cmnd);
|
void dispatchCommand(String cmnd);
|
||||||
void dispatchJson(char * strPayload);
|
void dispatchJson(char * strPayload);
|
||||||
void dispatchJsonl(char * strPayload);
|
void dispatchJsonl(char * strPayload);
|
||||||
@ -16,10 +16,10 @@ void dispatchClearPage(String strPageid);
|
|||||||
void dispatchDim(String strDimLevel);
|
void dispatchDim(String strDimLevel);
|
||||||
void dispatchBacklight(String strPayload);
|
void dispatchBacklight(String strPayload);
|
||||||
|
|
||||||
void dispatchIdle(const __FlashStringHelper * state);
|
void dispatchIdle(const char * state);
|
||||||
void dispatchReboot(bool saveConfig);
|
void dispatchReboot(bool saveConfig);
|
||||||
void dispatchStatusUpdate(void);
|
void dispatchStatusUpdate(void);
|
||||||
|
|
||||||
void dispatchButton(uint8_t id, char * event);
|
void dispatch_button(uint8_t id, const char * event);
|
||||||
|
|
||||||
#endif
|
#endif
|
Loading…
x
Reference in New Issue
Block a user