1
0
mirror of https://github.com/esphome/esphome.git synced 2025-10-03 18:42:23 +01:00

Add state callback to ota component (#1816)

Co-authored-by: Maurice Makaay <mmakaay1@xs4all.net>
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
This commit is contained in:
Maurice Makaay
2021-07-10 21:52:19 +02:00
committed by GitHub
parent cdbc146e5d
commit 623570a117
5 changed files with 184 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
#include "esphome/core/component.h"
#include "esphome/core/preferences.h"
#include "esphome/core/helpers.h"
#include <WiFiServer.h>
#include <WiFiClient.h>
@@ -32,6 +33,8 @@ enum OTAResponseTypes {
OTA_RESPONSE_ERROR_UNKNOWN = 255,
};
enum OTAState { OTA_COMPLETED = 0, OTA_STARTED, OTA_IN_PROGRESS, OTA_ERROR };
/// OTAComponent provides a simple way to integrate Over-the-Air updates into your app using ArduinoOTA.
class OTAComponent : public Component {
public:
@@ -49,6 +52,10 @@ class OTAComponent : public Component {
bool should_enter_safe_mode(uint8_t num_attempts, uint32_t enable_time);
#ifdef USE_OTA_STATE_CALLBACK
void add_on_state_callback(std::function<void(OTAState, float, uint8_t)> &&callback);
#endif
// ========== INTERNAL METHODS ==========
// (In most use cases you won't need these)
void setup() override;
@@ -82,6 +89,10 @@ class OTAComponent : public Component {
uint32_t safe_mode_rtc_value_;
uint8_t safe_mode_num_attempts_;
ESPPreferenceObject rtc_;
#ifdef USE_OTA_STATE_CALLBACK
CallbackManager<void(OTAState, float, uint8_t)> state_callback_{};
#endif
};
} // namespace ota