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);
}
|