Project

General

Profile

Statistics
| Branch: | Revision:

pse-2015-16-grupo-3 / tpf / tempo.c @ 87a830c5

History | View | Annotate | Download (1.99 KB)

1
#include "tempo.h"
2
#include "display.h"
3

    
4
pse_time_t relogio;
5

    
6
uint8_t setTime(pse_time_t tempoInicial)
7
{
8
        relogio.segundos = tempoInicial.segundos;
9
        relogio.minutos = tempoInicial.minutos;
10
        relogio.horas = tempoInicial.horas;
11
        return 0;
12
}
13

    
14
uint8_t getTime(pse_time_t *tempoActual)
15
{
16
        tempoActual->segundos = relogio.segundos;
17
        tempoActual->minutos = relogio.minutos;
18
        tempoActual->horas = relogio.horas;
19
        return 0;
20
}
21

    
22

    
23
uint8_t increaseTime(uint8_t nSeconds)
24
{
25
        int i;
26
        for(i = 0 ; i < nSeconds ; i++)
27
        {
28
                relogio.segundos++;
29
                if(relogio.segundos == 60)
30
                {
31
                        relogio.segundos = 0;
32
                        relogio.minutos++;
33
                }
34
                if(relogio.minutos == 60)
35
                {
36
                        relogio.minutos = 0;
37
                        relogio.horas++;
38
                }
39
                if(relogio.horas == 24)
40
                {
41
                        relogio.horas = 0;
42
                }
43
        }
44
        
45
        
46
        
47
        return 0;
48
                
49
}
50

    
51
uint8_t decreaseTime(uint8_t nSeconds)
52
{
53
        int i;
54
        for(i = 0 ; i < nSeconds ; i++)
55
        {
56
                relogio.segundos--;
57
                if(relogio.segundos == 255)
58
                {
59
                        relogio.segundos = 59;
60
                        relogio.minutos--;
61
                }
62
                if(relogio.minutos == 255)
63
                {
64
                        relogio.minutos = 59;
65
                        relogio.horas--;
66
                }
67
                if(relogio.horas == 255)
68
                {
69
                        relogio.horas = 23;
70
                }
71
        }
72
        return 0;
73
}
74

    
75
uint8_t increase()
76
{
77
        // "Time values under 1 min are set to the second"
78
        if(relogio.minutos < 1)
79
                increaseTime(1);
80
        
81
        // "Time values from 1 to 3 min are set in multiples of 10 s"
82
        else if(relogio.minutos >= 1 && relogio.minutos <= 3)
83
                increaseTime(10);
84
        
85
        // "Time values larger than 3 min are set in multiples of 30 s"
86
        else if(relogio.minutos > 3)
87
                increaseTime(30);
88
        
89
        setDisplayTime(relogio);
90
        
91
        return 0;
92
}
93

    
94
uint8_t decrease()
95
{
96
        // "Time values under 1 min are set to the second"
97
        if(relogio.minutos < 1)
98
                decreaseTime(1);
99
        
100
        // "Time values from 1 to 3 min are set in multiples of 10 s"
101
        else if(relogio.minutos >= 1 && relogio.minutos <= 3)
102
                decreaseTime(10);
103
        
104
        // "Time values larger than 3 min are set in multiples of 30 s"
105
        else if(relogio.minutos > 3)
106
                decreaseTime(30);
107

    
108
        setDisplayTime(relogio);
109
        
110
        return 0;        
111
}
112