InfiniTime.git

ref: 9196c18d376d4f18c686bcfec8550f9c8659d5ea

src/components/firmwarevalidator/FirmwareValidator.cpp


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include "components/firmwarevalidator/FirmwareValidator.h"

#include <hal/nrf_rtc.h>
#include "drivers/InternalFlash.h"

using namespace Pinetime::Controllers;

bool FirmwareValidator::IsValidated() const {
  auto* imageOkPtr = reinterpret_cast<uint32_t*>(validBitAdress);
  return (*imageOkPtr) == validBitValue;
}

void FirmwareValidator::Validate() {
  if (!IsValidated())
    Pinetime::Drivers::InternalFlash::WriteWord(validBitAdress, validBitValue);
}

void FirmwareValidator::Reset() {
  NVIC_SystemReset();
}