summaryrefslogtreecommitdiff
path: root/apps/plugins/clock/clock_counter.c
blob: 7137eeaf381221edcd7425ad43fa7b92461cb41d (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
#include "clock_counter.h"
#include "clock_bitmap_strings.h"

void counter_init(struct counter* counter){
    counter->ticks_since_started=0;
    counter->ticks_at_last_unpause=0;
    counter->paused=true;
}

int counter_get_ticks_since_last_pause(struct counter* counter){
    if(!counter->paused)
        return(*rb->current_tick - counter->ticks_at_last_unpause);
    return(0);
}

void counter_toggle(struct counter* counter){
    counter_pause(counter, !counter->paused);
}

void counter_pause(struct counter* counter, bool pause){
    if(pause){
        counter->ticks_since_started+=counter_get_ticks_since_last_pause(counter);
    }else{
        counter->ticks_at_last_unpause=*rb->current_tick;
    }
    counter->paused=pause;
}

void counter_get_elapsed_time(struct counter* counter, struct time* elapsed_time){
    int total_time=counter_get_ticks_since_last_pause(counter);
    total_time+=counter->ticks_since_started;
    total_time/=HZ;/* converts ticks to seconds */

    elapsed_time->second =  total_time%60;
    elapsed_time->minute = (total_time%3600) / 60;
    elapsed_time->hour   =  total_time / 3600;
    /* not yet ! */
    elapsed_time->day=0;
    elapsed_time->month=0;
    elapsed_time->year=0;
}