35 lines
1.0 KiB
C++
35 lines
1.0 KiB
C++
#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<ArduinoOTAUpdater>::instance()->setEvent(InputEvent::FirmwareUpdate);
|
|
}
|
|
|
|
void ArduinoOTAUpdater::s_onProgress(unsigned int progress, unsigned int total) {
|
|
Log.notice("OTA Progress! %d / %d", progress, total);
|
|
Static<ArduinoOTAUpdater>::instance()->setEvent(InputEvent{InputEvent::FirmwareUpdate, progress});
|
|
}
|
|
|
|
STATIC_ALLOC(ArduinoOTAUpdater);
|
|
STATIC_TASK(ArduinoOTAUpdater);
|