Bluenet  5.7.0
Bluenet, firmware for nRF52 smart home devices
Loading...
Searching...
No Matches
cs_TimeOfDay.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <stdint.h>
11#include <util/cs_Math.h>
12
13#include <array>
14
19class TimeOfDay {
20public:
21 enum class BaseTime : uint8_t { Midnight = 0, Sunrise = 1, Sunset = 2 };
22 typedef std::array<uint8_t, 5> SerializedDataType;
23
24private:
26 int32_t secSinceBase;
27
28 // ensures that sec_since_base is positive when base is equal to BaseTime::Midnight
29 // otherwise does nothing
30 void wrap();
31
32 // currently hardcoded sunrise/down times.
34
35public:
36 // ===================== Constructors =====================
37
38 TimeOfDay(BaseTime basetime, int32_t secondsSinceBase);
39
41
42 // H:M:S constructor, creates a Midnight based TimeOfDay.
43 TimeOfDay(uint32_t h, uint32_t m, uint32_t s);
44 TimeOfDay(uint32_t secondsSinceMidnight);
45
46 // TimeOfDay describing the given 'event'
49 static TimeOfDay Sunset();
50
51 // ===================== Conversions =====================
52
54
55 // converts to a different base time in order to compare.
56 // note that this conversion is in principle dependent on the season
57 // as sunrise/down are so too.
59
60 uint8_t h();
61 uint8_t m();
62 uint8_t s();
63
68 operator uint32_t();
69};
Author: Crownstone Team Copyright: Crownstone (https://crownstone.rocks) Date: Sep 24,...
Definition: cs_TimeOfDay.h:19
BaseTime base
Definition: cs_TimeOfDay.h:25
TimeOfDay(uint32_t secondsSinceMidnight)
void wrap()
int32_t baseTimeSinceMidnight(BaseTime b)
uint8_t h()
TimeOfDay(BaseTime basetime, int32_t secondsSinceBase)
SerializedDataType serialize() const
static TimeOfDay Midnight()
uint8_t m()
static TimeOfDay Sunset()
TimeOfDay(SerializedDataType rawData)
static TimeOfDay Sunrise()
uint8_t s()
TimeOfDay convert(BaseTime newBase)
TimeOfDay(uint32_t h, uint32_t m, uint32_t s)
std::array< uint8_t, 5 > SerializedDataType
Definition: cs_TimeOfDay.h:22
BaseTime
Definition: cs_TimeOfDay.h:21
int32_t secSinceBase
Definition: cs_TimeOfDay.h:26