Skip to content

Commit

Permalink
Extend 'uart:' with 'invert:' for esp32 (#1586)
Browse files Browse the repository at this point in the history
  • Loading branch information
needspeed committed Mar 6, 2021
1 parent e62bf33 commit 0f151a8
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
6 changes: 5 additions & 1 deletion esphome/components/uart/__init__.py
Expand Up @@ -2,7 +2,7 @@
import esphome.config_validation as cv
from esphome import pins, automation
from esphome.const import CONF_BAUD_RATE, CONF_ID, CONF_RX_PIN, CONF_TX_PIN, CONF_UART_ID, \
CONF_DATA, CONF_RX_BUFFER_SIZE
CONF_DATA, CONF_RX_BUFFER_SIZE, CONF_INVERT
from esphome.core import CORE, coroutine

CODEOWNERS = ['@esphome/core']
Expand Down Expand Up @@ -47,6 +47,8 @@ def validate_rx_pin(value):
cv.Optional(CONF_TX_PIN): pins.output_pin,
cv.Optional(CONF_RX_PIN): validate_rx_pin,
cv.Optional(CONF_RX_BUFFER_SIZE, default=256): cv.validate_bytes,
cv.SplitDefault(CONF_INVERT, esp32=False): cv.All(cv.only_on_esp32,
cv.boolean),
cv.Optional(CONF_STOP_BITS, default=1): cv.one_of(1, 2, int=True),
cv.Optional(CONF_DATA_BITS, default=8): cv.int_range(min=5, max=8),
cv.Optional(CONF_PARITY, default="NONE"): cv.enum(UART_PARITY_OPTIONS, upper=True)
Expand All @@ -65,6 +67,8 @@ def to_code(config):
if CONF_RX_PIN in config:
cg.add(var.set_rx_pin(config[CONF_RX_PIN]))
cg.add(var.set_rx_buffer_size(config[CONF_RX_BUFFER_SIZE]))
if CONF_INVERT in config:
cg.add(var.set_invert(config[CONF_INVERT]))
cg.add(var.set_stop_bits(config[CONF_STOP_BITS]))
cg.add(var.set_data_bits(config[CONF_DATA_BITS]))
cg.add(var.set_parity(config[CONF_PARITY]))
Expand Down
6 changes: 6 additions & 0 deletions esphome/components/uart/uart.h
Expand Up @@ -90,6 +90,9 @@ class UARTComponent : public Component, public Stream {
void set_tx_pin(uint8_t tx_pin) { this->tx_pin_ = tx_pin; }
void set_rx_pin(uint8_t rx_pin) { this->rx_pin_ = rx_pin; }
void set_rx_buffer_size(size_t rx_buffer_size) { this->rx_buffer_size_ = rx_buffer_size; }
#ifdef ARDUINO_ARCH_ESP32
void set_invert(bool invert) { this->invert_ = invert; }
#endif
void set_stop_bits(uint8_t stop_bits) { this->stop_bits_ = stop_bits; }
void set_data_bits(uint8_t data_bits) { this->data_bits_ = data_bits; }
void set_parity(UARTParityOptions parity) { this->parity_ = parity; }
Expand All @@ -106,6 +109,9 @@ class UARTComponent : public Component, public Stream {
optional<uint8_t> tx_pin_;
optional<uint8_t> rx_pin_;
size_t rx_buffer_size_;
#ifdef ARDUINO_ARCH_ESP32
bool invert_;
#endif
uint32_t baud_rate_;
uint8_t stop_bits_;
uint8_t data_bits_;
Expand Down
2 changes: 1 addition & 1 deletion esphome/components/uart/uart_esp32.cpp
Expand Up @@ -80,7 +80,7 @@ void UARTComponent::setup() {
}
int8_t tx = this->tx_pin_.has_value() ? *this->tx_pin_ : -1;
int8_t rx = this->rx_pin_.has_value() ? *this->rx_pin_ : -1;
this->hw_serial_->begin(this->baud_rate_, get_config(), rx, tx);
this->hw_serial_->begin(this->baud_rate_, get_config(), rx, tx, this->invert_);
this->hw_serial_->setRxBufferSize(this->rx_buffer_size_);
}

Expand Down
1 change: 1 addition & 0 deletions tests/test1.yaml
Expand Up @@ -169,6 +169,7 @@ uart:
data_bits: 8
stop_bits: 1
rx_buffer_size: 512
invert: false

- id: adalight_uart
tx_pin: GPIO25
Expand Down

0 comments on commit 0f151a8

Please sign in to comment.