Revert "update (#133)" (#138)

This reverts commit 3d6d2457af.
This commit is contained in:
Sebastian Muszynski 2023-11-21 12:11:07 +01:00 committed by GitHub
parent a54047e31e
commit e318b92f64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 44 deletions

View File

@ -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;
while (available()) {
uint8_t c;
read_byte(&c);
if (state_ == 0) {
if (c == '\r' || c == '\n') {
continue;
}
label_.clear();
value_.clear();
state_ = 1;
}
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);
}
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;
}
}
}
}

View File

@ -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};