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
#include "plugin.h"

PLUGIN_HEADER

enum plugin_status plugin_start(const void* parameter)
{
    (void)parameter;

#ifdef HAVE_LCD_BITMAP
    rb->lcd_setfont(FONT_SYSFIXED);
#endif

    struct tm *t;
    t = rb->get_time();
    int m = t->tm_min * 60 + t->tm_sec;

    const unsigned int loops = 30 * /* secs */
        120 * /* MHz */
        (1000000/4) /* loops per MHz */
    ;

    asm volatile(
        "1: subs %0, %0, #1 \n"
        "   bne  1b         \n"
        : : "r"(loops)
    );

    t = rb->get_time();
    int s = (t->tm_min * 60 + t->tm_sec) - m;

    rb->splashf(HZ*3, "%d seconds", s);

    return PLUGIN_OK;
}