Project

General

Profile

Statistics
| Branch: | Revision:

root / toolbox / led.c @ db11713d

History | View | Annotate | Download (860 Bytes)

1 dc472500 Tom Mullins
#include "led.h"
2 94548bf4 Tom Mullins
#include "time.h"
3 dc472500 Tom Mullins
4 1085ef77 Tom Mullins
char blink_count;
5
enum color_t blink_color;
6 94548bf4 Tom Mullins
uint16_t blink_period, blink_ticks;
7 dc472500 Tom Mullins
8 1085ef77 Tom Mullins
static void led_color(enum color_t color) {
9
  switch (color) {
10
    case OFF:
11
      led_off();
12
      break;
13
    case RED:
14
      led_red();
15
      break;
16
    case YELLOW:
17
      led_yellow();
18
      break;
19
    case GREEN:
20
      led_green();
21
      break;
22
  }
23
}
24
25 94548bf4 Tom Mullins
void led_tick() {
26
  if (blink_count) {
27
    if (++blink_ticks >= blink_period) {
28
      blink_ticks = 0;
29
      if (--blink_count % 2) {
30
        led_color(blink_color);
31
      } else {
32
        led_off();
33
      }
34 dc472500 Tom Mullins
    }
35
  }
36
}
37
38 1085ef77 Tom Mullins
void led_blink_start(unsigned int period_ms, char n_times, enum color_t color) {
39
  blink_count = n_times*2-1;
40 94548bf4 Tom Mullins
  blink_period = period_ms/2/TICK_MS;
41
  blink_ticks = 0;
42 1085ef77 Tom Mullins
  blink_color = color;
43
  led_color(color);
44 dc472500 Tom Mullins
}
45
46
char led_blink_done() {
47 1085ef77 Tom Mullins
  return blink_count == 0;
48 dc472500 Tom Mullins
}