Add progmem support for String messages (#875)

added variant of MyMessage::set and sendSketchInfo that accept a
string that's stored in PROGMEM.

This avoids the need to (temporarily) store strings in memory to get
them into a message.
This commit is contained in:
Rainer Clasen
2017-06-21 23:41:48 +02:00
committed by Olivier
parent e5221689af
commit ff0953dd05
4 changed files with 40 additions and 1 deletions

View File

@@ -249,6 +249,23 @@ MyMessage& MyMessage::set(const char* value)
return *this;
}
#if !defined(__linux__)
MyMessage& MyMessage::set(const __FlashStringHelper* value)
{
uint8_t length = value == NULL ? 0
: min(strlen_P(reinterpret_cast<const char *>(value)), (size_t)MAX_PAYLOAD);
miSetLength(length);
miSetPayloadType(P_STRING);
if (length) {
strncpy_P(data, reinterpret_cast<const char *>(value), length);
}
// null terminate string
data[length] = 0;
return *this;
}
#endif
MyMessage& MyMessage::set(bool value)
{
miSetLength(1);