-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathUI.h
152 lines (117 loc) · 2.74 KB
/
UI.h
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
//
// Created by aren on 30/1/21.
//
#ifndef DIVECOMPUTER_UI_H
#define DIVECOMPUTER_UI_H
#include "HWInterface.h"
#include "DiveManager.h"
#include "FSInterface.h"
#define ROW_1 10
#define ROW_2 50
#define ROW_3 90
#define ROW_4 130
#define VAL_OFFSET 15
#define COLUMN_1 10
#define COLUMN_2 60
#define COLUMN_3 110
#define COLUMN_4 160
#define SURFACE_DIVE_THRESHOLD 0.5
#define END_DIVE_TIMEOUT 5
#define TURN_OFF_TIMEOUT 10
#define MENU_TIMEOUT 1
#define MAX_GAS_COUNT 10
enum Mode {
DIVE,
SURFACE,
WIFI
};
//struct MenuItem {
// MenuItem();
//
// const char *MenuText{};
//
// void ( *Callback)(MenuItem &item){};
// bool Enabled{};
//
// MenuItem(const char *menuText, void (*const callback)(MenuItem &item), bool enabled) : MenuText(menuText),
// Callback(callback),
// Enabled(enabled) {}
//};
//
//struct Menu
//{
// struct MenuItem **Items;
// int ItemsSize;
// int CurrIndex;
//
// Menu(struct MenuItem **items, int itemsSize, int currIndex) : Items(items), ItemsSize(itemsSize),
// CurrIndex(currIndex) {}
//};
struct UIState {
int Mode;
bool InMenu;
struct Menu *Menu;
bool ClearNeeded;
bool inDeco;
};
#ifndef REALTIME
#define REALTIME
struct RealTime {
int Second;
int Minute;
int Hour;
int Day;
int Month;
int Year;
};
#else
struct RealTime;
#endif
struct UIData {
double Depth;
double AmbientPressure;
double Temperature;
double DiveTime;
Deco::DecoStop Stop;
double NDL;
Deco::Gas Gas;
double PPO2;
double Heading;
double Rate;
RealTime Time;
double AverageDepth;
double TTS;
double CNS;
};
struct Bar {
int OriginX;
int OriginY;
int Length;
int Thickness;
bool Vertical;
int Color;
double MaxValue;
bool EndStop;
};
extern UIState CurrUIState;
void ShowWifiScreen(UIData data);
bool SelfTest();
void ShowDiveScreen(UIData &data);
void ShowSurfaceScreen(UIData &data);
void ButtonOne();
void ButtonTwo();
void RestoreMenu();
void ShowDiveTopRow(UIData &data);
void ShowBottomRow(UIData &data);
void ShowBar(Bar &bar, double value);
void UpdateUI(UIData &data);
void ShowMenu(Menu &menu);
void SwitchGasCallback(MenuItem &item);
void EndDiveCallback(MenuItem &item);
void TurnOffCallback(MenuItem &item);
void StartWebCallback(MenuItem &item);
void StopWebCallback(MenuItem &item);
void StartDiveCallback(MenuItem &item);
void GasMenuCallback(MenuItem &item);
void CalibrateCompassCallback(MenuItem &item);
#endif //DIVECOMPUTER_UI_H