#include "OTA.h" #include "../../Static.h" ArduinoOTAUpdater::ArduinoOTAUpdater() : BufferedInputSource("ArduinoOTA") { ArduinoOTA.onStart(&ArduinoOTAUpdater::s_onStart); ArduinoOTA.onProgress(&ArduinoOTAUpdater::s_onProgress); } void ArduinoOTAUpdater::loop() { if (m_online) { ArduinoOTA.handle(); } BufferedInputSource::loop(); } void ArduinoOTAUpdater::handleEvent(const InputEvent& evt) { if (evt.intent == InputEvent::NetworkStatus && evt.asInt()) { Log.notice("Booting OTA"); m_online = true; ArduinoOTA.begin(); } } void ArduinoOTAUpdater::s_onStart() { Log.notice("OTA Start!"); Static::instance()->setEvent(InputEvent::FirmwareUpdate); } void ArduinoOTAUpdater::s_onProgress(unsigned int progress, unsigned int total) { Log.notice("OTA Progress! %d / %d", progress, total); Static::instance()->setEvent(InputEvent{InputEvent::FirmwareUpdate, progress}); } STATIC_ALLOC(ArduinoOTAUpdater); STATIC_TASK(ArduinoOTAUpdater);