From e318b92f6472cfc9aaf4c2ce44c83adf210f9296 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Tue, 21 Nov 2023 12:11:07 +0100 Subject: [PATCH] Revert "update (#133)" (#138) This reverts commit 3d6d2457afe66bb5e74362a1f83fad5bc1e9b243. --- components/victron/victron.cpp | 88 +++++++++++++++++----------------- components/victron/victron.h | 1 - 2 files changed, 45 insertions(+), 44 deletions(-) diff --git a/components/victron/victron.cpp b/components/victron/victron.cpp index e068f1c..c9c6bf9 100644 --- a/components/victron/victron.cpp +++ b/components/victron/victron.cpp @@ -93,59 +93,61 @@ void VictronComponent::loop() { ESP_LOGW(TAG, "Last transmission too long ago"); state_ = 0; } + if (!available()) return; last_transmission_ = now; - uint8_t c; - read_byte(&c); - if (state_ == 0) { - if (c == '\r' || c == '\n') { - return; - } - label_.clear(); - value_.clear(); - state_ = 1; - begin_frame_ = now; - } - if (state_ == 1) { - // Start of a ve.direct hex frame - if (c == ':') { - state_ = 3; - return; - } - if (c == '\t') { - state_ = 2; - } else { - label_.push_back(c); + while (available()) { + uint8_t c; + read_byte(&c); + if (state_ == 0) { + if (c == '\r' || c == '\n') { + continue; + } + label_.clear(); + value_.clear(); + state_ = 1; } - return; - } - if (state_ == 2) { - if (label_ == "Checksum") { - state_ = 0; - // The checksum is used as end of frame indicator - if (begin_frame_ - this->last_publish_ >= this->throttle_) { - this->last_publish_ = begin_frame_; - this->publishing_ = true; + if (state_ == 1) { + // Start of a ve.direct hex frame + if (c == ':') { + state_ = 3; + continue; + } + if (c == '\t') { + state_ = 2; } else { - this->publishing_ = false; + label_.push_back(c); } - return; + continue; } - if (c == '\r' || c == '\n') { - if (this->publishing_) { - handle_value_(); + if (state_ == 2) { + if (label_ == "Checksum") { + state_ = 0; + // The checksum is used as end of frame indicator + if (now - this->last_publish_ >= this->throttle_) { + this->last_publish_ = now; + this->publishing_ = true; + } else { + this->publishing_ = false; + } + continue; + } + if (c == '\r' || c == '\n') { + if (this->publishing_) { + handle_value_(); + } + state_ = 0; + } else { + value_.push_back(c); } - state_ = 0; - } else { - value_.push_back(c); } - } - // Discard ve.direct hex frame - if (state_ == 3) { - if (c == '\r' || c == '\n') { - state_ = 0; + // Discard ve.direct hex frame + if (state_ == 3) { + if (c == '\r' || c == '\n') { + state_ = 0; + } } } } diff --git a/components/victron/victron.h b/components/victron/victron.h index fd74d7a..9221006 100644 --- a/components/victron/victron.h +++ b/components/victron/victron.h @@ -287,7 +287,6 @@ class VictronComponent : public uart::UARTDevice, public Component { int state_{0}; std::string label_; std::string value_; - uint32_t begin_frame_{0}; uint32_t last_transmission_{0}; uint32_t last_publish_{0}; uint32_t throttle_{0};