AceTimeClock  1.0.3
Clock classes for Arduino that can synchronize from an NTP server or an RTC chip
Stm32F1Clock.h
1 /*
2  * MIT License
3  * Copyright (c) 2021 Brian T. Park
4  */
5 
6 #ifndef ACE_TIME_STM32_F1_CLOCK_H
7 #define ACE_TIME_STM32_F1_CLOCK_H
8 
9 #if defined(ARDUINO_ARCH_STM32)
10 #if defined(STM32F1xx)
11 
12 #include <stdint.h>
13 #include "../hw/Stm32F1Rtc.h"
14 #include "Clock.h"
15 
16 namespace ace_time {
17 namespace clock {
18 
67 class Stm32F1Clock: public Clock {
68  public:
69  explicit Stm32F1Clock() {}
70 
71  void setup() {
72  mStm32F1Rtc.begin();
73  }
74 
75  acetime_t getNow() const override {
76  return mStm32F1Rtc.getTime();
77  }
78 
79  void setNow(acetime_t epochSeconds) override {
80  if (epochSeconds == kInvalidSeconds) return;
81  mStm32F1Rtc.setTime(epochSeconds);
82  }
83 
84  private:
85  mutable hw::Stm32F1Rtc mStm32F1Rtc;
86 };
87 
88 } // clock
89 } // ace_time
90 
91 #endif // #if defined(STM32F1xx)
92 #endif // #if defined(ARDUINO_ARCH_STM32)
93 
94 #endif // #ifndef ACE_TIME_STM32F1_CLOCK_H