aboutsummaryrefslogtreecommitdiff
path: root/ui.c
blob: 6b63a86e32fae6924fa8d8143e2e64b3fe10840f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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);
}