ESPHome 2025.10.0-dev
Loading...
Searching...
No Matches
improv_serial_component.h
Go to the documentation of this file.
1#pragma once
2
8#ifdef USE_WIFI
9#include <improv.h>
10#include <vector>
11
12#ifdef USE_ESP32
13#include <driver/uart.h>
14#if defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32S3) || \
15 defined(USE_ESP32_VARIANT_ESP32H2)
16#include <driver/usb_serial_jtag.h>
17#include <hal/usb_serial_jtag_ll.h>
18#endif
19#if defined(USE_ESP32_VARIANT_ESP32S2) || defined(USE_ESP32_VARIANT_ESP32S3)
20#include <esp_private/usb_console.h>
21#endif
22#elif defined(USE_ARDUINO)
23#include <HardwareSerial.h>
24#endif
25
26namespace esphome {
27namespace improv_serial {
28
35
36static const uint16_t IMPROV_SERIAL_TIMEOUT = 100;
37static const uint8_t IMPROV_SERIAL_VERSION = 1;
38
40 public:
41 void setup() override;
42 void loop() override;
43 void dump_config() override;
44
45 float get_setup_priority() const override { return setup_priority::AFTER_WIFI; }
46
47 protected:
48 bool parse_improv_serial_byte_(uint8_t byte);
49 bool parse_improv_payload_(improv::ImprovCommand &command);
50
51 void set_state_(improv::State state);
52 void set_error_(improv::Error error);
53 void send_response_(std::vector<uint8_t> &response);
55
56 std::vector<uint8_t> build_rpc_settings_response_(improv::Command command);
57 std::vector<uint8_t> build_version_info_();
58
60 void write_data_(std::vector<uint8_t> &data);
61
62#ifdef USE_ESP32
63 uart_port_t uart_num_;
64#elif defined(USE_ARDUINO)
65 Stream *hw_serial_{nullptr};
66#endif
67
68 std::vector<uint8_t> rx_buffer_;
69 uint32_t last_read_byte_{0};
71 improv::State state_{improv::STATE_AUTHORIZED};
72};
73
74extern ImprovSerialComponent
75 *global_improv_serial_component; // NOLINT(cppcoreguidelines-avoid-non-const-global-variables)
76
77} // namespace improv_serial
78} // namespace esphome
79#endif
std::vector< uint8_t > build_rpc_settings_response_(improv::Command command)
void send_response_(std::vector< uint8_t > &response)
bool parse_improv_payload_(improv::ImprovCommand &command)
bool state
Definition fan.h:0
ImprovSerialComponent * global_improv_serial_component
const float AFTER_WIFI
For components that should be initialized after WiFi is connected.
Definition component.cpp:56
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7