--- /dev/null
+#include "lcd.h"
+
+struct backlight backlight;
+
+void lcd_setup(void)
+{
+ lcd.createChar(0, char_music);
+ lcd.createChar(1, char_smile);
+
+ lcd.begin(COLS, ROWS);
+ lcd.blink();
+
+ pinMode(LCD_BL, OUTPUT);
+}
+
+void bl_tasks(void)
+{
+ if (backlight.state == BL_FLASH)
+ if (!--backlight.timer)
+ backlight.state = BL_OFF;
+
+ switch (backlight.state) {
+ case BL_OFF:
+ digitalWrite(LCD_BL, 0);
+ break;
+ case BL_FLASH:
+ case BL_ON:
+ digitalWrite(LCD_BL, 1);
+ break;
+ }
+}
+
+void bl_set(enum backlight_state state)
+{
+ backlight.state = state;
+ if (state == BL_FLASH)
+ backlight.timer = (unsigned int) -1;
+}