mirror of
https://github.com/esphome/esphome.git
synced 2024-11-10 01:07:45 +01:00
[uponor_smatrix] Modifies sending algorithm (#7326)
Co-authored-by: Rafa Treviño <rafael.trevino@bbva.com>
This commit is contained in:
parent
04248b6840
commit
e3ae8cd31e
2 changed files with 4 additions and 7 deletions
|
@ -45,11 +45,8 @@ void UponorSmatrixComponent::loop() {
|
||||||
|
|
||||||
// Read incoming data
|
// Read incoming data
|
||||||
while (this->available()) {
|
while (this->available()) {
|
||||||
// The controller polls devices every 10 seconds, with around 200 ms between devices.
|
// The controller polls devices every 10 seconds in some units or continuously in others with around 200 ms between
|
||||||
// Remember timestamps so we can send our own packets when the bus is expected to be silent.
|
// devices. Remember timestamps so we can send our own packets when the bus is expected to be silent.
|
||||||
if (now - this->last_rx_ > 500) {
|
|
||||||
this->last_poll_start_ = now;
|
|
||||||
}
|
|
||||||
this->last_rx_ = now;
|
this->last_rx_ = now;
|
||||||
|
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
|
@ -60,7 +57,8 @@ void UponorSmatrixComponent::loop() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send packets during bus silence
|
// Send packets during bus silence
|
||||||
if ((now - this->last_rx_ > 300) && (now - this->last_poll_start_ < 9500) && (now - this->last_tx_ > 200)) {
|
if (this->rx_buffer_.empty() && (now - this->last_rx_ > 50) && (now - this->last_rx_ < 100) &&
|
||||||
|
(now - this->last_tx_ > 200)) {
|
||||||
#ifdef USE_TIME
|
#ifdef USE_TIME
|
||||||
// Only build time packet when bus is silent and queue is empty to make sure we can send it right away
|
// Only build time packet when bus is silent and queue is empty to make sure we can send it right away
|
||||||
if (this->send_time_requested_ && this->tx_queue_.empty() && this->do_send_time_())
|
if (this->send_time_requested_ && this->tx_queue_.empty() && this->do_send_time_())
|
||||||
|
|
|
@ -93,7 +93,6 @@ class UponorSmatrixComponent : public uart::UARTDevice, public Component {
|
||||||
std::queue<std::vector<uint8_t>> tx_queue_;
|
std::queue<std::vector<uint8_t>> tx_queue_;
|
||||||
uint32_t last_rx_;
|
uint32_t last_rx_;
|
||||||
uint32_t last_tx_;
|
uint32_t last_tx_;
|
||||||
uint32_t last_poll_start_;
|
|
||||||
|
|
||||||
#ifdef USE_TIME
|
#ifdef USE_TIME
|
||||||
time::RealTimeClock *time_id_{nullptr};
|
time::RealTimeClock *time_id_{nullptr};
|
||||||
|
|
Loading…
Reference in a new issue