Make UART flush function consistent (#748)

See also 78be9d2937
This commit is contained in:
Otto Winter 2019-10-17 16:54:38 +02:00 committed by GitHub
parent e15071228e
commit 78c1adafcd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 6 deletions

View file

@ -77,16 +77,17 @@ void MHZ19Component::abc_disable() {
} }
bool MHZ19Component::mhz19_write_command_(const uint8_t *command, uint8_t *response) { bool MHZ19Component::mhz19_write_command_(const uint8_t *command, uint8_t *response) {
this->flush(); // Empty RX Buffer
while (this->available())
this->read();
this->write_array(command, MHZ19_REQUEST_LENGTH); this->write_array(command, MHZ19_REQUEST_LENGTH);
this->write_byte(mhz19_checksum(command)); this->write_byte(mhz19_checksum(command));
this->flush();
if (response == nullptr) if (response == nullptr)
return true; return true;
bool ret = this->read_array(response, MHZ19_RESPONSE_LENGTH); return this->read_array(response, MHZ19_RESPONSE_LENGTH);
this->flush();
return ret;
} }
float MHZ19Component::get_setup_priority() const { return setup_priority::DATA; } float MHZ19Component::get_setup_priority() const { return setup_priority::DATA; }
void MHZ19Component::dump_config() { void MHZ19Component::dump_config() {

View file

@ -94,7 +94,6 @@ float SDS011Component::get_setup_priority() const { return setup_priority::DATA;
void SDS011Component::set_rx_mode_only(bool rx_mode_only) { this->rx_mode_only_ = rx_mode_only; } void SDS011Component::set_rx_mode_only(bool rx_mode_only) { this->rx_mode_only_ = rx_mode_only; }
void SDS011Component::sds011_write_command_(const uint8_t *command_data) { void SDS011Component::sds011_write_command_(const uint8_t *command_data) {
this->flush();
this->write_byte(SDS011_MSG_HEAD); this->write_byte(SDS011_MSG_HEAD);
this->write_byte(SDS011_COMMAND_ID_REQUEST); this->write_byte(SDS011_COMMAND_ID_REQUEST);
this->write_array(command_data, SDS011_DATA_REQUEST_LENGTH); this->write_array(command_data, SDS011_DATA_REQUEST_LENGTH);

View file

@ -316,7 +316,9 @@ uint8_t ESP8266SoftwareSerial::peek_byte() {
return 0; return 0;
return this->rx_buffer_[this->rx_out_pos_]; return this->rx_buffer_[this->rx_out_pos_];
} }
void ESP8266SoftwareSerial::flush() { this->rx_in_pos_ = this->rx_out_pos_ = 0; } void ESP8266SoftwareSerial::flush() {
// Flush is a NO-OP with software serial, all bytes are written immediately.
}
int ESP8266SoftwareSerial::available() { int ESP8266SoftwareSerial::available() {
int avail = int(this->rx_in_pos_) - int(this->rx_out_pos_); int avail = int(this->rx_in_pos_) - int(this->rx_out_pos_);
if (avail < 0) if (avail < 0)

View file

@ -61,6 +61,7 @@ class UARTComponent : public Component, public Stream {
int available() override; int available() override;
/// Block until all bytes have been written to the UART bus.
void flush() override; void flush() override;
float get_setup_priority() const override { return setup_priority::BUS; } float get_setup_priority() const override { return setup_priority::BUS; }