From de51ae76f4836b49862a0028254386d4bd86a72d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Poczkodi?= Date: Thu, 29 Feb 2024 00:53:24 +0100 Subject: [PATCH] got rid of gdo0/gdo2 for every board except esp8266, that needs to know which single pin to use bidirectionally --- esphome/components/cc1101/cc1101.cpp | 31 +++++++++---------- esphome/components/cc1101/cc1101.h | 2 -- esphome/components/cc1101/sensor.py | 12 +++---- .../components/cc1101/test.esp32-c3-idf.yaml | 14 ++------- tests/components/cc1101/test.esp32-c3.yaml | 14 ++------- tests/components/cc1101/test.esp32-idf.yaml | 14 ++------- .../components/cc1101/test.esp32-s2-idf.yaml | 14 ++------- tests/components/cc1101/test.esp32-s2.yaml | 14 ++------- tests/components/cc1101/test.esp32.yaml | 14 ++------- tests/components/cc1101/test.esp8266.yaml | 1 - 10 files changed, 30 insertions(+), 100 deletions(-) diff --git a/esphome/components/cc1101/cc1101.cpp b/esphome/components/cc1101/cc1101.cpp index c0f164771b..c308a85726 100644 --- a/esphome/components/cc1101/cc1101.cpp +++ b/esphome/components/cc1101/cc1101.cpp @@ -6,7 +6,13 @@ It can be compiled with Arduino and esp-idf framework and should support any esphome compatible board through the SPI Bus. - On ESP8266, you can use the same pin for GDO and GD2 (it is an optional parameter). + On ESP8266, you can use a single pin instead of GD0O and GD02 (gdo0 is an optional parameter). If assigned, + the pin direction will be reversed for the transfers. + + On ESP32, this will not work, you must connect two separate pins. TX to GDO0, RX to GDO2. + If only TX works, they are probably switched. + + Transferst must be surrounded with cc1101.begin_tx and cc1101.end_tx. The source code is a mashup of the following github projects with some special esphome sauce: @@ -48,7 +54,6 @@ static const uint8_t PA_TABLE_915[10]{0x03, 0x0E, 0x1E, 0x27, 0x38, 0x8E, 0x84, CC1101::CC1101() { this->gdo0_ = nullptr; - this->gdo2_ = nullptr; this->bandwidth_ = 200; this->frequency_ = 433920; this->rssi_sensor_ = nullptr; @@ -80,14 +85,7 @@ CC1101::CC1101() { this->pa_table_[1] = 0xc0; } -void CC1101::set_config_gdo0(InternalGPIOPin *pin) { - gdo0_ = pin; - - if (gdo2_ == nullptr) - gdo2_ = pin; -} - -void CC1101::set_config_gdo2(InternalGPIOPin *pin) { gdo2_ = pin; } +void CC1101::set_config_gdo0(InternalGPIOPin *pin) { gdo0_ = pin; } void CC1101::set_config_bandwidth(uint32_t bandwidth) { bandwidth_ = bandwidth; } @@ -98,10 +96,10 @@ void CC1101::set_config_rssi_sensor(sensor::Sensor *rssi_sensor) { rssi_sensor_ void CC1101::set_config_lqi_sensor(sensor::Sensor *lqi_sensor) { lqi_sensor_ = lqi_sensor; } void CC1101::setup() { - this->gdo0_->setup(); - this->gdo2_->setup(); - this->gdo0_->pin_mode(gpio::FLAG_OUTPUT); - this->gdo2_->pin_mode(gpio::FLAG_INPUT); + if (this->gdo0_ != nullptr) { + this->gdo0_->setup(); + this->gdo0_->pin_mode(gpio::FLAG_INPUT); + } this->spi_setup(); @@ -184,7 +182,6 @@ void CC1101::dump_config() { ESP_LOGCONFIG(TAG, "CC1101 partnum %02x version %02x:", this->partnum_, this->version_); LOG_PIN(" CC1101 CS Pin: ", this->cs_); LOG_PIN(" CC1101 GDO0: ", this->gdo0_); - LOG_PIN(" CC1101 GDO2: ", this->gdo2_); ESP_LOGCONFIG(TAG, " CC1101 Bandwith: %d KHz", this->bandwidth_); ESP_LOGCONFIG(TAG, " CC1101 Frequency: %d KHz", this->frequency_); LOG_SENSOR(" ", "RSSI", this->rssi_sensor_); @@ -646,7 +643,7 @@ void CC1101::split_mdmcfg4_() { void CC1101::begin_tx() { this->set_tx_(); - if (this->gdo0_ == this->gdo2_) { + if (this->gdo0_ != nullptr) { #ifdef USE_ESP8266 #ifdef USE_ARDUINO noInterrupts(); // NOLINT @@ -659,7 +656,7 @@ void CC1101::begin_tx() { } void CC1101::end_tx() { - if (this->gdo0_ == this->gdo2_) { + if (this->gdo0_ != nullptr) { #ifdef USE_ESP8266 #ifdef USE_ARDUINO interrupts(); // NOLINT diff --git a/esphome/components/cc1101/cc1101.h b/esphome/components/cc1101/cc1101.h index c8266cb9cb..e4d2e5e1a5 100644 --- a/esphome/components/cc1101/cc1101.h +++ b/esphome/components/cc1101/cc1101.h @@ -13,7 +13,6 @@ class CC1101 : public sensor::Sensor, spi::DATA_RATE_1KHZ> { protected: InternalGPIOPin *gdo0_; - InternalGPIOPin *gdo2_; uint32_t bandwidth_; uint32_t frequency_; sensor::Sensor *rssi_sensor_; @@ -78,7 +77,6 @@ class CC1101 : public sensor::Sensor, CC1101(); void set_config_gdo0(InternalGPIOPin *pin); - void set_config_gdo2(InternalGPIOPin *pin); void set_config_bandwidth(uint32_t bandwidth); void set_config_frequency(uint32_t frequency); void set_config_rssi_sensor(sensor::Sensor *rssi_sensor); diff --git a/esphome/components/cc1101/sensor.py b/esphome/components/cc1101/sensor.py index f42708c366..3cc8626219 100644 --- a/esphome/components/cc1101/sensor.py +++ b/esphome/components/cc1101/sensor.py @@ -16,7 +16,6 @@ from esphome.const import ( DEPENDENCIES = ["spi"] CONF_GDO0 = "gdo0" -CONF_GDO2 = "gdo2" CONF_BANDWIDTH = "bandwidth" # CONF_FREQUENCY = "frequency" CONF_RSSI = "rssi" @@ -32,8 +31,7 @@ CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(CC1101), - cv.Required(CONF_GDO0): pins.gpio_output_pin_schema, - cv.Optional(CONF_GDO2): pins.gpio_input_pin_schema, + cv.Optional(CONF_GDO0): pins.gpio_output_pin_schema, cv.Optional(CONF_BANDWIDTH, default=200): cv.uint32_t, cv.Optional(CONF_FREQUENCY, default=433920): cv.uint32_t, cv.Optional(CONF_RSSI): sensor.sensor_schema( @@ -73,11 +71,9 @@ async def to_code(config): await cg.register_component(var, config) await spi.register_spi_device(var, config) - gdo0 = await cg.gpio_pin_expression(config[CONF_GDO0]) - cg.add(var.set_config_gdo0(gdo0)) - if CONF_GDO2 in config: - gdo2 = await cg.gpio_pin_expression(config[CONF_GDO2]) - cg.add(var.set_config_gdo2(gdo2)) + if CONF_GDO0 in config: + gdo0 = await cg.gpio_pin_expression(config[CONF_GDO0]) + cg.add(var.set_config_gdo0(gdo0)) cg.add(var.set_config_bandwidth(config[CONF_BANDWIDTH])) cg.add(var.set_config_frequency(config[CONF_FREQUENCY])) if CONF_RSSI in config: diff --git a/tests/components/cc1101/test.esp32-c3-idf.yaml b/tests/components/cc1101/test.esp32-c3-idf.yaml index 61a340dc5c..6463d27cc8 100644 --- a/tests/components/cc1101/test.esp32-c3-idf.yaml +++ b/tests/components/cc1101/test.esp32-c3-idf.yaml @@ -7,12 +7,6 @@ sensor: - platform: cc1101 id: transceiver cs_pin: GPIO10 - gdo0: - number: GPIO3 - allow_other_uses: true - gdo2: - number: GPIO4 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -28,16 +22,12 @@ remote_transmitter: - pin: GPIO21 # TX pin carrier_duty_percent: 100% id: dummytx - - pin: - number: GPIO3 # GDO0 - allow_other_uses: true + - pin: GPIO3 # GDO0 carrier_duty_percent: 100% id: realtx remote_receiver: - pin: - number: GPIO4 # GDO0 - allow_other_uses: true + pin: GPIO4 # GDO2 dump: - rc_switch # Settings to optimize recognition of RF devices diff --git a/tests/components/cc1101/test.esp32-c3.yaml b/tests/components/cc1101/test.esp32-c3.yaml index 61a340dc5c..6463d27cc8 100644 --- a/tests/components/cc1101/test.esp32-c3.yaml +++ b/tests/components/cc1101/test.esp32-c3.yaml @@ -7,12 +7,6 @@ sensor: - platform: cc1101 id: transceiver cs_pin: GPIO10 - gdo0: - number: GPIO3 - allow_other_uses: true - gdo2: - number: GPIO4 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -28,16 +22,12 @@ remote_transmitter: - pin: GPIO21 # TX pin carrier_duty_percent: 100% id: dummytx - - pin: - number: GPIO3 # GDO0 - allow_other_uses: true + - pin: GPIO3 # GDO0 carrier_duty_percent: 100% id: realtx remote_receiver: - pin: - number: GPIO4 # GDO0 - allow_other_uses: true + pin: GPIO4 # GDO2 dump: - rc_switch # Settings to optimize recognition of RF devices diff --git a/tests/components/cc1101/test.esp32-idf.yaml b/tests/components/cc1101/test.esp32-idf.yaml index 537eb4dd4e..0beae70d55 100644 --- a/tests/components/cc1101/test.esp32-idf.yaml +++ b/tests/components/cc1101/test.esp32-idf.yaml @@ -7,12 +7,6 @@ sensor: - platform: cc1101 id: transceiver cs_pin: GPIO5 - gdo0: - number: GPIO32 - allow_other_uses: true - gdo2: - number: GPIO33 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -21,15 +15,11 @@ sensor: name: LQI remote_transmitter: - - pin: - number: GPIO32 # GDO0 - allow_other_uses: true + - pin: GPIO32 # GDO0 carrier_duty_percent: 100% remote_receiver: - pin: - number: GPIO33 # GDO0 - allow_other_uses: true + pin: GPIO33 # GDO2 dump: - rc_switch # Settings to optimize recognition of RF devices diff --git a/tests/components/cc1101/test.esp32-s2-idf.yaml b/tests/components/cc1101/test.esp32-s2-idf.yaml index db38d24143..4ad8eb9fed 100644 --- a/tests/components/cc1101/test.esp32-s2-idf.yaml +++ b/tests/components/cc1101/test.esp32-s2-idf.yaml @@ -7,12 +7,6 @@ sensor: - platform: cc1101 id: transceiver cs_pin: GPIO34 - gdo0: - number: GPIO8 - allow_other_uses: true - gdo2: - number: GPIO9 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -21,15 +15,11 @@ sensor: name: LQI remote_transmitter: - - pin: - number: GPIO8 # GDO0 - allow_other_uses: true + - pin: GPIO8 # GDO0 carrier_duty_percent: 100% remote_receiver: - pin: - number: GPIO9 # GDO0 - allow_other_uses: true + pin: GPIO9 # GDO2 dump: - rc_switch # Settings to optimize recognition of RF devices diff --git a/tests/components/cc1101/test.esp32-s2.yaml b/tests/components/cc1101/test.esp32-s2.yaml index db38d24143..4ad8eb9fed 100644 --- a/tests/components/cc1101/test.esp32-s2.yaml +++ b/tests/components/cc1101/test.esp32-s2.yaml @@ -7,12 +7,6 @@ sensor: - platform: cc1101 id: transceiver cs_pin: GPIO34 - gdo0: - number: GPIO8 - allow_other_uses: true - gdo2: - number: GPIO9 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -21,15 +15,11 @@ sensor: name: LQI remote_transmitter: - - pin: - number: GPIO8 # GDO0 - allow_other_uses: true + - pin: GPIO8 # GDO0 carrier_duty_percent: 100% remote_receiver: - pin: - number: GPIO9 # GDO0 - allow_other_uses: true + pin: GPIO9 # GDO2 dump: - rc_switch # Settings to optimize recognition of RF devices diff --git a/tests/components/cc1101/test.esp32.yaml b/tests/components/cc1101/test.esp32.yaml index 537eb4dd4e..0beae70d55 100644 --- a/tests/components/cc1101/test.esp32.yaml +++ b/tests/components/cc1101/test.esp32.yaml @@ -7,12 +7,6 @@ sensor: - platform: cc1101 id: transceiver cs_pin: GPIO5 - gdo0: - number: GPIO32 - allow_other_uses: true - gdo2: - number: GPIO33 - allow_other_uses: true bandwidth: 200 frequency: 433920 rssi: @@ -21,15 +15,11 @@ sensor: name: LQI remote_transmitter: - - pin: - number: GPIO32 # GDO0 - allow_other_uses: true + - pin: GPIO32 # GDO0 carrier_duty_percent: 100% remote_receiver: - pin: - number: GPIO33 # GDO0 - allow_other_uses: true + pin: GPIO33 # GDO2 dump: - rc_switch # Settings to optimize recognition of RF devices diff --git a/tests/components/cc1101/test.esp8266.yaml b/tests/components/cc1101/test.esp8266.yaml index 3a387f9d78..d2a4a9ed79 100644 --- a/tests/components/cc1101/test.esp8266.yaml +++ b/tests/components/cc1101/test.esp8266.yaml @@ -10,7 +10,6 @@ sensor: gdo0: number: D1 # GPIO5 allow_other_uses: true - # gdo2: not used with ESP8266 bandwidth: 200 frequency: 433920 rssi: