diff options
author | David Phillips <david@yeah.nah.nz> | 2021-02-27 23:25:04 +1300 |
---|---|---|
committer | David Phillips <david@yeah.nah.nz> | 2021-02-27 23:25:54 +1300 |
commit | 64a168c77568f8886662b535515ff25d056042e9 (patch) | |
tree | ad0044e2c51d794b7affb4b2386afb2ed7c45b7a /ui.c | |
parent | 4118386ca9a4cb717f0d79f636586f0151d3e985 (diff) | |
download | altimeter-64a168c77568f8886662b535515ff25d056042e9.tar.xz |
Re-add basic display-only logic
This module will be extended later with input and UI/menu logic
Diffstat (limited to 'ui.c')
-rw-r--r-- | ui.c | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -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); +} |