aboutsummaryrefslogtreecommitdiff
path: root/examples/embedded_ui/UI.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/embedded_ui/UI.c')
-rw-r--r--examples/embedded_ui/UI.c48
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);
+}