2021-10-13 20:08:35 +00:00
|
|
|
#include "components/firmwarevalidator/FirmwareValidator.h"
|
2020-08-11 15:50:00 +00:00
|
|
|
|
2020-11-15 14:05:51 +00:00
|
|
|
#include <hal/nrf_rtc.h>
|
|
|
|
#include "drivers/InternalFlash.h"
|
|
|
|
|
2020-08-11 15:50:00 +00:00
|
|
|
using namespace Pinetime::Controllers;
|
|
|
|
|
|
|
|
bool FirmwareValidator::IsValidated() const {
|
2021-04-18 17:28:14 +00:00
|
|
|
auto* imageOkPtr = reinterpret_cast<uint32_t*>(validBitAdress);
|
2020-08-11 15:50:00 +00:00
|
|
|
return (*imageOkPtr) == validBitValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
void FirmwareValidator::Validate() {
|
2021-04-18 17:28:14 +00:00
|
|
|
if (!IsValidated())
|
2020-08-11 15:50:00 +00:00
|
|
|
Pinetime::Drivers::InternalFlash::WriteWord(validBitAdress, validBitValue);
|
|
|
|
}
|
|
|
|
|
|
|
|
void FirmwareValidator::Reset() {
|
|
|
|
NVIC_SystemReset();
|
|
|
|
}
|