aboutsummaryrefslogtreecommitdiff
path: root/ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui.c')
-rw-r--r--ui.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/ui.c b/ui.c
new file mode 100644
index 0000000..6b63a86
--- /dev/null
+++ b/ui.c
@@ -0,0 +1,63 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "data_manager.h"
+#include "display.h"
+#include "util.h"
+#include "ui.h"
+
+void ui_init(struct ui_ctx *ui, struct display *display)
+{
+ ui->display = display;
+ ui->display->init();
+ ui->display->clear();
+}
+
+void ui_update(struct ui_ctx *ui, struct data_ctx *dctx)
+{
+ char line[LCD_WIDTH+1];
+ //if (rate_m_s < 0) {
+ // rate_sym = C_DESC;
+ //} else if (rate_m_s == 0) {
+ // rate_sym = C_IDLE;
+ //} else {
+ // rate_sym = C_ASC;
+ //}
+ //DEBUG_MARK_5_CLEAR;
+
+ /* FIXME these are missing from the data context, dummy values to test */
+ float rate_m_s = 1.2;
+ char rate_sym = '\0';
+ if (rate_m_s < 0) {
+ rate_sym = C_DESC;
+ } else if (rate_m_s == 0) {
+ rate_sym = C_IDLE;
+ } else {
+ rate_sym = C_ASC;
+ }
+
+ /* line 1 */
+ snprintf(line, sizeof(line), "%.1f m %c%d m/s", dctx->altitude, rate_sym, abs(rate_m_s));
+ blank_to_eol(line, sizeof(line));
+ ui->display->set_cursor(0, 0);
+ ui->display->write(line);
+
+
+ /* line 2 */
+ snprintf(line, sizeof(line), "%.2f hPa", dctx->pressure);
+ blank_to_eol(line, sizeof(line));
+ ui->display->set_cursor(0, 1);
+ ui->display->write(line);
+
+ /* line 3 */
+ snprintf(line, sizeof(line), "SET %.2f hPa", dctx->setting);
+ blank_to_eol(line, sizeof(line));
+ ui->display->set_cursor(0, 2);
+ ui->display->write(line);
+
+ /* line 4 */
+ snprintf(line, sizeof(line), "%.1f ""\xdf""C", 12.3f);
+ blank_to_eol(line, sizeof(line));
+ ui->display->set_cursor(0, 3);
+ ui->display->write(line);
+}