1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-13 00:32:20 +01:00

ESP-IDF support and generic target platforms (#2303)

* Socket refactor and SSL

* esp-idf temp

* Fixes

* Echo component and noise

* Add noise API transport support

* Updates

* ESP-IDF

* Complete

* Fixes

* Fixes

* Versions update

* New i2c APIs

* Complete i2c refactor

* SPI migration

* Revert ESP Preferences migration, too complex for now

* OTA support

* Remove echo again

* Remove ssl again

* GPIOFlags updates

* Rename esphal and ICACHE_RAM_ATTR

* Make ESP32 arduino compilable again

* Fix GPIO flags

* Complete pin registry refactor and fixes

* Fixes to make test1 compile

* Remove sdkconfig file

* Ignore sdkconfig file

* Fixes in reviewing

* Make test2 compile

* Make test4 compile

* Make test5 compile

* Run clang-format

* Fix lint errors

* Use esp-idf APIs instead of btStart

* Another round of fixes

* Start implementing ESP8266

* Make test3 compile

* Guard esp8266 code

* Lint

* Reformat

* Fixes

* Fixes v2

* more fixes

* ESP-IDF tidy target

* Convert ARDUINO_ARCH_ESPxx

* Update WiFiSignalSensor

* Update time ifdefs

* OTA needs millis from hal

* RestartSwitch needs delay from hal

* ESP-IDF Uart

* Fix OTA blank password

* Allow setting sdkconfig

* Fix idf partitions and allow setting sdkconfig from yaml

* Re-add read/write compat APIs and fix esp8266 uart

* Fix esp8266 store log strings in flash

* Fix ESP32 arduino preferences not initialized

* Update ifdefs

* Change how sdkconfig change is detected

* Add checks to ci-custom and fix them

* Run clang-format

* Add esp-idf clang-tidy target and fix errors

* Fixes from clang-tidy idf round 2

* Fixes from compiling tests with esp-idf

* Run clang-format

* Switch test5.yaml to esp-idf

* Implement ESP8266 Preferences

* Lint

* Re-do PIO package version selection a bit

* Fix arduinoespressif32 package version

* Fix unit tests

* Lint

* Lint fixes

* Fix readv/writev not defined

* Fix graphing component

* Re-add all old options from core/config.py

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
Otto Winter
2021-09-20 11:47:51 +02:00
committed by GitHub
parent 1e8e471dec
commit ac0d921413
583 changed files with 9008 additions and 5420 deletions

View File

@@ -1092,15 +1092,13 @@ MIDEA_SCHEMA = cv.Schema(
[cv.Any(cv.hex_uint8_t, cv.uint8_t)],
cv.Length(min=5, max=5),
),
cv.GenerateID(CONF_CODE_STORAGE_ID): cv.declare_id(cg.uint8),
}
)
@register_binary_sensor("midea", MideaBinarySensor, MIDEA_SCHEMA)
def midea_binary_sensor(var, config):
arr_ = cg.progmem_array(config[CONF_CODE_STORAGE_ID], config[CONF_CODE])
cg.add(var.set_code(arr_))
cg.add(var.set_code(config[CONF_CODE]))
@register_trigger("midea", MideaTrigger, MideaData)
@@ -1119,5 +1117,4 @@ def midea_dumper(var, config):
MIDEA_SCHEMA,
)
async def midea_action(var, config, args):
arr_ = cg.progmem_array(config[CONF_CODE_STORAGE_ID], config[CONF_CODE])
cg.add(var.set_code(arr_))
cg.add(var.set_code(config[CONF_CODE]))

View File

@@ -17,8 +17,6 @@ class MideaData {
MideaData(const std::vector<uint8_t> &data) {
memcpy(this->data_, data.data(), std::min<size_t>(data.size(), sizeof(this->data_)));
}
// Make 40-bit copy from PROGMEM array
MideaData(const uint8_t *data) { memcpy_P(this->data_, data, OFFSET_CS); }
// Default copy constructor
MideaData(const MideaData &) = default;
@@ -83,7 +81,7 @@ class MideaBinarySensor : public RemoteReceiverBinarySensorBase {
auto data = MideaProtocol().decode(src);
return data.has_value() && data.value() == this->data_;
}
void set_code(const uint8_t *code) { this->data_ = code; }
void set_code(const std::vector<uint8_t> &code) { this->data_ = code; }
protected:
MideaData data_;
@@ -93,7 +91,8 @@ using MideaTrigger = RemoteReceiverTrigger<MideaProtocol, MideaData>;
using MideaDumper = RemoteReceiverDumper<MideaProtocol, MideaData>;
template<typename... Ts> class MideaAction : public RemoteTransmitterActionBase<Ts...> {
TEMPLATABLE_VALUE(const uint8_t *, code)
TEMPLATABLE_VALUE(std::vector<uint8_t>, code)
void set_code(std::vector<uint8_t> code) { code_ = code; }
void encode(RemoteTransmitData *dst, Ts... x) override {
MideaData data = this->code_.value(x...);
data.finalize();

View File

@@ -6,7 +6,7 @@ namespace remote_base {
static const char *const TAG = "remote_base";
#ifdef ARDUINO_ARCH_ESP32
#ifdef USE_ESP32
RemoteRMTChannel::RemoteRMTChannel(uint8_t mem_block_num) : mem_block_num_(mem_block_num) {
static rmt_channel_t next_rmt_channel = RMT_CHANNEL_0;
this->channel_ = next_rmt_channel;

View File

@@ -3,11 +3,11 @@
#pragma once
#include "esphome/core/component.h"
#include "esphome/core/esphal.h"
#include "esphome/core/hal.h"
#include "esphome/core/automation.h"
#include "esphome/components/binary_sensor/binary_sensor.h"
#ifdef ARDUINO_ARCH_ESP32
#ifdef USE_ESP32
#include <driver/rmt.h>
#endif
@@ -146,13 +146,13 @@ template<typename T> class RemoteProtocol {
class RemoteComponentBase {
public:
explicit RemoteComponentBase(GPIOPin *pin) : pin_(pin){};
explicit RemoteComponentBase(InternalGPIOPin *pin) : pin_(pin){};
protected:
GPIOPin *pin_;
InternalGPIOPin *pin_;
};
#ifdef ARDUINO_ARCH_ESP32
#ifdef USE_ESP32
class RemoteRMTChannel {
public:
explicit RemoteRMTChannel(uint8_t mem_block_num = 1);
@@ -178,7 +178,7 @@ class RemoteRMTChannel {
class RemoteTransmitterBase : public RemoteComponentBase {
public:
RemoteTransmitterBase(GPIOPin *pin) : RemoteComponentBase(pin) {}
RemoteTransmitterBase(InternalGPIOPin *pin) : RemoteComponentBase(pin) {}
class TransmitCall {
public:
explicit TransmitCall(RemoteTransmitterBase *parent) : parent_(parent) {}
@@ -221,7 +221,7 @@ class RemoteReceiverDumperBase {
class RemoteReceiverBase : public RemoteComponentBase {
public:
RemoteReceiverBase(GPIOPin *pin) : RemoteComponentBase(pin) {}
RemoteReceiverBase(InternalGPIOPin *pin) : RemoteComponentBase(pin) {}
void register_listener(RemoteReceiverListener *listener) { this->listeners_.push_back(listener); }
void register_dumper(RemoteReceiverDumperBase *dumper) {
if (dumper->is_secondary()) {

View File

@@ -1,5 +1,6 @@
#include "samsung_protocol.h"
#include "esphome/core/log.h"
#include <cinttypes>
namespace esphome {
namespace remote_base {

View File

@@ -1,5 +1,6 @@
#include "toshiba_ac_protocol.h"
#include "esphome/core/log.h"
#include <cinttypes>
namespace esphome {
namespace remote_base {