summaryrefslogtreecommitdiff
path: root/src/components/firmwarevalidator/FirmwareValidator.cpp
blob: 244d5c06bf704afdc9727e02a5248a82c4e381f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <drivers/InternalFlash.h>
#include <hal/nrf_rtc.h>

#include "FirmwareValidator.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();
}