mirror of
https://github.com/daveallie/crosspoint-reader.git
synced 2026-02-04 14:47:37 +03:00
## Summary Finally, I have received my device and got to chance to work on OTA. https://github.com/crosspoint-reader/crosspoint-reader/issues/176 * **What is the goal of this PR?** (e.g., Implements the new feature for file uploading.) Existing OTA functionality is very buggy, many of times (I would say 8 out of 10) are end up with fail for me. When the time that it works it is very slow and take ages. For others looks like end up with crash or different issues. * **What changes are included?** To be honest, I'm not familiar with Arduino APIs of OTA process, but looks like not good as much esp-idf itself. I always found Arduino APIs very bulky for esp32. Wrappers and wrappers. ## Additional Context Right now, OTA takes ~ 3min 10sec (of course depends on size of .bin file). Can be tested with playing version info inside from `platform.ini` file. ``` [crosspoint] version = 0.14.0 ``` --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**< NO >**_
40 lines
811 B
C++
40 lines
811 B
C++
#pragma once
|
|
|
|
#include <functional>
|
|
#include <string>
|
|
|
|
class OtaUpdater {
|
|
bool updateAvailable = false;
|
|
std::string latestVersion;
|
|
std::string otaUrl;
|
|
size_t otaSize = 0;
|
|
size_t processedSize = 0;
|
|
size_t totalSize = 0;
|
|
bool render = false;
|
|
|
|
public:
|
|
enum OtaUpdaterError {
|
|
OK = 0,
|
|
NO_UPDATE,
|
|
HTTP_ERROR,
|
|
JSON_PARSE_ERROR,
|
|
UPDATE_OLDER_ERROR,
|
|
INTERNAL_UPDATE_ERROR,
|
|
OOM_ERROR,
|
|
};
|
|
|
|
size_t getOtaSize() const { return otaSize; }
|
|
|
|
size_t getProcessedSize() const { return processedSize; }
|
|
|
|
size_t getTotalSize() const { return totalSize; }
|
|
|
|
bool getRender() const { return render; }
|
|
|
|
OtaUpdater() = default;
|
|
bool isUpdateNewer() const;
|
|
const std::string& getLatestVersion() const;
|
|
OtaUpdaterError checkForUpdate();
|
|
OtaUpdaterError installUpdate();
|
|
};
|