mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
response "" for empty, fix value for some cases
This commit is contained in:
@@ -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>());
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user