-
Notifications
You must be signed in to change notification settings - Fork 0
/
utility.h
134 lines (100 loc) · 3.52 KB
/
utility.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#pragma once
#include <Arduino.h>
namespace charno
{
namespace utility
{
class ArduinoOTAUtil
{
public:
static void setupArduinoOTA();
static void otaLoopHandler();
};
class TimeUtil
{
public:
class TickGenerator
{
unsigned long lastTime = 0;
unsigned long tickMillis;
public:
TickGenerator(unsigned long tickMillis) : tickMillis(tickMillis) {}
bool checkTick();
};
/**
* See https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv for timezones
*/
static String timezone;
static String getTimeString();
};
class LogUtil
{
public:
enum LogLevel
{
TRACE = 0,
DEBUG = 1,
INFO = 2,
WARN = 3,
ERROR = 4,
NONE = 5,
};
static LogLevel logLevel;
static String udpHost;
static uint16_t udpPort;
private:
static void log(String message, String level, bool append);
public:
static void trace(String message, bool append = false)
{
if(logLevel <= LogLevel::TRACE) log(message, "TRACE", append);
}
static void debug(String message, bool append = false)
{
if(logLevel <= LogLevel::DEBUG) log(message, "DEBUG", append);
}
static void info(String message, bool append = false)
{
if(logLevel <= LogLevel::INFO) log(message, " INFO", append);
}
static void warn(String message, bool append = false)
{
if(logLevel <= LogLevel::WARN) log(message, " WARN", append);
}
static void error(String message, bool append = false)
{
if(logLevel <= LogLevel::ERROR) log(message, "ERROR", append);
}
}; // class Logger
class WiFiUtil
{
public:
// Mandatory WiFi settings
static String ssid;
static String password;
// Optional WiFi settings
static int32_t channel;
static uint8_t bssid[6];
static uint32_t wifiTimeoutMillis;
// Hostname settings
static String hostname;
// Static IP settings
static bool staticIp;
static String ip;
static String subnet;
static String gateway;
static String nameserver;
// ntp settings
static bool doNtp;
static String ntpserver;
private:
static const uint8_t empty_bssid[];
static void getNtpTime();
public:
static bool writeSettingsToFlash();
static bool readSettingsFromFlash();
static bool startWifi();
static bool isConnected();
}; // class WiFiUtil
} // namespace utility
} // namespace charno