response "" for empty, fix value for some cases

This commit is contained in:
MichaelDvP
2024-07-25 17:58:38 +02:00
parent 9c80c92f06
commit 8adb35e47a
2 changed files with 4 additions and 6 deletions

View File

@@ -729,7 +729,7 @@ void EMSESP::publish_response(std::shared_ptr<const Telegram> telegram) {
}
buffer[267] = '\0';
}
if (telegram->message_length > 0 || telegram->offset == offset) {
if (telegram->message_length) {
strlcpy(&buffer[(telegram->offset - offset) * 3], Helpers::data_to_hex(telegram->message_data, telegram->message_length).c_str(), 768);
} else {
strlcpy(&buffer[(telegram->offset - offset) * 3], "", 768);
@@ -746,11 +746,8 @@ void EMSESP::publish_response(std::shared_ptr<const Telegram> telegram) {
doc["offset"] = Helpers::hextoa(s, offset);
doc["data"] = buffer;
if (telegram->message_length <= 4 && strlen(buffer) <= 11) {
uint32_t value = 0;
for (uint8_t i = 0; i < telegram->message_length; i++) {
value = (value << 8) + telegram->message_data[i];
}
if (strlen(buffer) && strlen(buffer) <= 11) {
uint32_t value = Helpers::hextoint(buffer);
doc["value"] = value;
}
Mqtt::queue_publish("response", doc.as<JsonObject>());

View File

@@ -411,6 +411,7 @@ uint32_t Helpers::hextoint(const char * hex) {
// get current character then increment
char byte = *hex++;
// transform hex character to the 4bit equivalent number, using the ascii table indexes
if (byte == ' ') byte = *hex++; // skip spaces
if (byte >= '0' && byte <= '9')
byte = byte - '0';
else if (byte >= 'a' && byte <= 'f')