diff options
Diffstat (limited to 'examples/embedded_ui/UI.c')
-rw-r--r-- | examples/embedded_ui/UI.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/examples/embedded_ui/UI.c b/examples/embedded_ui/UI.c new file mode 100644 index 0000000..8ce996e --- /dev/null +++ b/examples/embedded_ui/UI.c @@ -0,0 +1,48 @@ +#include "UI.h" +#include "DISPLAY.h" +#include "SYSTEM.h" +#include <string.h> + +static unsigned int missed_irq_counter; +button_cbk_t button_cbk; + + +void UI_init() +{ + DISPLAY_init(); + SYSTEM_register_irq(UI_button_irq_handler, IRQ_GPIO_2); + button_cbk = 0; + missed_irq_counter = 0; +} + +unsigned int UI_get_missed_irqs() +{ + return missed_irq_counter; +} + +void UI_button_irq_handler() +{ + if(button_cbk) + { + button_cbk(); + } + else + { + missed_irq_counter++; + } +} + +void UI_register_button_cbk(button_cbk_t cbk) +{ + button_cbk = cbk; +} + +void UI_write_line(char *line) +{ + static char out[27]; + strncpy(out, line, 26); + out[26] = '\0'; + if(DISPLAY_get_line_capacity() == DISPLAY_get_line_insert_index()) + DISPLAY_clear(); + DISPLAY_output(out); +} |