summaryrefslogtreecommitdiff
path: root/src/text.c
blob: ece25d564ae530d6a185dfd49683abcf8dca33e7 (plain)
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
#include "text.h"

#include "signal.h"

#include "modules/pulse.h"
#include "modules/time.h"
#include "modules/battery.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <tgmath.h>

struct text *
text_new()
{
    struct text * t = malloc(sizeof(struct text));

    memset(t->value, '\0', TEXT_SIZE);

    t->last_update = 0;

    t->battery = battery_new();
    t->time = time_new();
    t->pulse = pulse_new();

    return t;
}

void
text_free(struct text * t)
{
    time_free(t->time);
    pulse_free(t->pulse);
    battery_free(t->battery);
    free(t);
}

void
text_update(struct text * t)
{
    time_t now_time = time(NULL);
    double time_diff = difftime(now_time, t->last_update);
    bool should_update = signal_should_update();

    t->last_update = now_time;

    time_update(t->time);

    if(should_update || time_diff > 3) {
        pulse_update(t->pulse);
    }

    if(should_update || time_diff > 5) {
        battery_update(t->battery);
    }

    snprintf(
        t->value, TEXT_SIZE,
        "VOL: %s | BAT: %s | %s",
        t->pulse->value,
        t->battery->value,
        t->time->value);
}