-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathALARMfuncs.h
52 lines (43 loc) · 1.02 KB
/
ALARMfuncs.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
#ifndef ALARMfuncs
#define ALARMfuncs
#include "global.h"
#include "time.h"
unsigned long get_unix_time() {
// pega o tempo atual no fuso-horário local (em padrão UNIX)
time_t now;
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
return (0);
}
time(&now);
return now;
}
int check_alarm(long arr[], long memory[], int *block) {
// itera pelos alarmes
long n1;
long n2;
long play = 0;
long alarme;
long dist;
time_t t = get_unix_time();
// checa se agora está próximo o suficiente de algum alarme?
if (*block) {
return 0;
}
for (int i = 0; i < MEMORY_SIZE; i++) {
alarme = memory[2*i];
dist = t - alarme;
dist = (dist < 0) ? 99 : dist;
if (dist < MARGIN) {
play = memory[2*i]; // o tempo atual está próximo o suficiente de algum alarme
n1 = memory[2*i + 1];
arr[0] = play;
arr[1] = n1;
// o alarme ainda não foi tocado
*block = 1;
return 1;
}
}
return 0;
}
#endif