-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcore.ino
More file actions
131 lines (128 loc) · 2.92 KB
/
core.ino
File metadata and controls
131 lines (128 loc) · 2.92 KB
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
/*
*
* Internal Processing
*
**/
/*
* void serialMessage() write standardized messages to serial monitor
* char type : (e)rror, (w)arning, (i)nformation, (d)ebug
* String tag : Stage Marker, Messafe identifier
* String message : Message to send
*
* // write : "INFO::CORE::SAMPLE: Hello World !" to serial
* serialMessage('i', 'CORE::SAMPLE', "Hello World !")
*
*/
#if VERBOSE >= 1
void serialMessage(char type, const String tag , const String message){
switch(type){
case 'e':
Serial.print(F("ERR:"));
Serial.print(tag);
Serial.print(F(": "));
Serial.println(message);
break;
#if VERBOSE >= 2
case 'w':
Serial.print(F("WRN:"));
Serial.print(tag);
Serial.print(F(": "));
Serial.println(message);
break;
case 'i':
Serial.print(F("INF:"));
Serial.print(tag);
Serial.print(F(": "));
Serial.println(message);
break;
#endif
#if VERBOSE >= 3
case 'd':
Serial.print(F("DBG:"));
Serial.print(tag);
Serial.print(F(": "));
Serial.println(message);
break;
#endif
}
}
#endif
/*
* String mac2Str()
*
* Convert Mac Array to String
*
*/
String mac2Str(uint8_t* in) {
static char macStr[18];
snprintf(macStr, sizeof(macStr),
"%02x%02x%02x%02x%02x%02x",
in[0], in[1], in[2], in[3], in[4], in[5]);
String tmp = macStr;
return tmp;
}
/*
* String ip2Str()
*
* Convert IP Array to String
*/
String ip2Str(IPAddress ip) {
static char ipStr[16];
snprintf(ipStr, sizeof(ipStr),
"%d.%d.%d.%d",
ip[0], ip[1], ip[2], ip[3]);
String tmp = ipStr;
return tmp;
}
/*
* Error
* Trigger reset function when MAX_RETRY errors is reached
*/
#if RESET_ON_FAIL > 0
static int ErrorCount;
void Error(const String errorDescription)
{
#if VERBOSE >= 1
serialMessage('e',F("FLUO:ERR:TRGR"), errorDescription);
#endif
ErrorCount++;
#if VERBOSE >= 1
serialMessage('e',F("FLUO:ERR:TRGR:COUNT"), String(ErrorCount));
#endif
eventId = 1;
if (ErrorCount >= MAX_RETRY)
ErrorCount = 0;
reset('s', errorDescription);
}
/*
* Reset w/ Timer
* type :
* s : short reset as soon as possible
* l : long reset when REBOOT_TIMEOUT is reached
*/
void reset(char type, String errorString) {
static int timeout = REBOOT_TIMEOUT;
static int partial = 1000;
if (type == 's') {
#if VERBOSE >= 1
serialMessage('e',F("FLUO:SOFTRST"), errorString);
#endif
eventId = 2;
void (*softReset) (void) = 0;
}
if (type == 'l') {
#if VERBOSE >= 1
serialMessage('e',F("FLUO:SOFTRST:TRGR"), errorString);
#endif
while (timeout / partial > 1){
timeout = timeout - partial;
#if VERBOSE >= 1
Serial.print(F("ERR:FLUO:SOFTRST:TIMR: "));
Serial.println(timeout);
#endif
delay(partial);
}
reset('s', errorString);
}
}
#endif