summaryrefslogtreecommitdiff
path: root/src/BootloaderVersion.cpp
diff options
context:
space:
mode:
authorNeil O'Fix <69880003+nlfx@users.noreply.github.com>2021-06-26 18:53:32 +0000
committerGitHub <noreply@github.com>2021-06-26 20:53:32 +0200
commit0045fb16b66b008c13888312b92688dcb7535a0c (patch)
treeae945a9184c1fe5f47003c9a6ef8e05a389d9f25 /src/BootloaderVersion.cpp
parent883700fca13a45b6cb0af4d74e3ef276a2d69283 (diff)
SPI flash sleep if bootloader >= 1.0.0 (#322)
* Retrieve and display bootloader version - Display bootloader version on System Info screen - Enable SPI flash sleep mode if bootloader version >= 1.0.0 * Wait for SPI flash to wakeup before starting OTA DFU
Diffstat (limited to 'src/BootloaderVersion.cpp')
-rw-r--r--src/BootloaderVersion.cpp30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/BootloaderVersion.cpp b/src/BootloaderVersion.cpp
index 5eba7a1d..07a1da4e 100644
--- a/src/BootloaderVersion.cpp
+++ b/src/BootloaderVersion.cpp
@@ -1,26 +1,36 @@
#include <cstdint>
+#include <cstdio>
#include "BootloaderVersion.h"
using namespace Pinetime;
-// NOTE : current bootloader does not export its version to the application firmware.
+// NOTE : version < 1.0.0 of bootloader does not export its version to the application firmware.
-uint32_t BootloaderVersion::Major() {
- return 0;
+uint32_t BootloaderVersion::version = 0;
+char BootloaderVersion::versionString[BootloaderVersion::VERSION_STR_LEN] = "0.0.0";
+
+const uint32_t BootloaderVersion::Major() {
+ return (BootloaderVersion::version >> 16u) & 0xff;
}
-uint32_t BootloaderVersion::Minor() {
- return 0;
+const uint32_t BootloaderVersion::Minor() {
+ return (BootloaderVersion::version >> 8u) & 0xff;
}
-uint32_t BootloaderVersion::Patch() {
- return 0;
+const uint32_t BootloaderVersion::Patch() {
+ return BootloaderVersion::version & 0xff;
}
const char* BootloaderVersion::VersionString() {
- return "0.0.0";
+ return BootloaderVersion::versionString;
+}
+
+const bool BootloaderVersion::IsValid() {
+ return BootloaderVersion::version >= 0x00010000;
}
-bool BootloaderVersion::IsValid() {
- return false;
+void BootloaderVersion::SetVersion(uint32_t v) {
+ BootloaderVersion::version = v;
+ snprintf(BootloaderVersion::versionString, BootloaderVersion::VERSION_STR_LEN, "%ld.%ld.%ld",
+ BootloaderVersion::Major(), BootloaderVersion::Minor(), BootloaderVersion::Patch());
}