diff options
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); +} |