Skip to content

Commit 12e170e

Browse files
committed
drawing refactor
1 parent 85f6db1 commit 12e170e

19 files changed

Lines changed: 2857 additions & 0 deletions
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# draw_cjc_sampling — identical between 96x16 and 128x32.
2+
3+
[[function]]
4+
name = "ui_draw_cjc_sampling"
5+
args = ["const uint8_t num_dots"]
6+
default_font = "small"
7+
8+
[[function.body]]
9+
cursor = [0, 0]
10+
11+
[[function.body]]
12+
i18n = "CJCCalibrating"
13+
14+
[[function.body]]
15+
cursor = [0, 8]
16+
17+
[[function.body]]
18+
symbol = "SmallSymbolDot"
19+
20+
[[function.body]]
21+
for = "uint8_t x = 0; x < num_dots; x++"
22+
23+
[[function.body.do]]
24+
symbol = "SmallSymbolDot"
Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
# draw_debug_menu — 17-case switch driven by a runtime item index.
2+
# Header lines + the per-case body for each item.
3+
4+
[file]
5+
includes = [
6+
"OperatingModes.h",
7+
"TipThermoModel.h",
8+
"main.hpp",
9+
"ui_drawing.hpp",
10+
]
11+
12+
declarations = [
13+
"extern osThreadId GUITaskHandle;",
14+
"extern osThreadId MOVTaskHandle;",
15+
"extern osThreadId PIDTaskHandle;",
16+
]
17+
18+
[[function]]
19+
signature = "void ui_draw_debug_menu(const uint8_t item_number)"
20+
default_font = "small"
21+
22+
# ───── header ─────
23+
24+
# Position the cursor at the 0,0 (top left)
25+
[[function.body]]
26+
cursor = [0, 0]
27+
28+
# Print version number
29+
[[function.body]]
30+
symbol = "SmallSymbolVersionNumber"
31+
32+
# second line
33+
[[function.body]]
34+
cursor = [0, 8]
35+
36+
[[function.body]]
37+
text = "DebugMenu[item_number]"
38+
39+
# ───── switch table ─────
40+
41+
[[function.body]]
42+
switch = "item_number"
43+
44+
[[function.body.cases]]
45+
value = "0"
46+
comment = "Build Date"
47+
48+
[[function.body.cases]]
49+
value = "1"
50+
comment = "Device ID"
51+
brace = true
52+
[[function.body.cases.do]]
53+
local = "uint64_t id = getDeviceID()"
54+
55+
# If the device has a validation code we take over both lines of the screen
56+
[[function.body.cases.do]]
57+
features = ["DEVICE_HAS_VALIDATION_CODE"]
58+
[[function.body.cases.do.elements]]
59+
# Ensure the buffer starts clean
60+
clear_screen = true
61+
[[function.body.cases.do.elements]]
62+
# Position the cursor at the 0,0 (top left)
63+
cursor = [0, 0]
64+
[[function.body.cases.do.elements]]
65+
text = "DebugMenu[item_number]"
66+
[[function.body.cases.do.elements]]
67+
hex = "getDeviceValidation()"
68+
digits = 8
69+
[[function.body.cases.do.elements]]
70+
# second line
71+
cursor = [0, 8]
72+
73+
[[function.body.cases.do]]
74+
hex = "(uint32_t)(id >> 32)"
75+
digits = 8
76+
[[function.body.cases.do]]
77+
hex = "(uint32_t)(id & 0xFFFFFFFF)"
78+
digits = 8
79+
80+
[[function.body.cases]]
81+
value = "2"
82+
comment = "ACC Type"
83+
[[function.body.cases.do]]
84+
text = "AccelTypeNames[(int)DetectedAccelerometerVersion]"
85+
86+
[[function.body.cases]]
87+
value = "3"
88+
comment = "Power Negotiation Status"
89+
[[function.body.cases.do]]
90+
text = "PowerSourceNames[getPowerSourceNumber()]"
91+
92+
[[function.body.cases]]
93+
value = "4"
94+
comment = "Input Voltage"
95+
[[function.body.cases.do]]
96+
call = "printVoltage"
97+
98+
[[function.body.cases]]
99+
value = "5"
100+
comment = "Temp in °C"
101+
[[function.body.cases.do]]
102+
number = "TipThermoModel::getTipInC()"
103+
places = 6
104+
105+
[[function.body.cases]]
106+
value = "6"
107+
comment = "Handle Temp in °C"
108+
[[function.body.cases.do]]
109+
number = "getHandleTemperature(0) / 10"
110+
places = 6
111+
[[function.body.cases.do]]
112+
symbol = "SmallSymbolDot"
113+
[[function.body.cases.do]]
114+
number = "getHandleTemperature(0) % 10"
115+
places = 1
116+
117+
[[function.body.cases]]
118+
value = "7"
119+
comment = "Max Temp Limit in °C"
120+
[[function.body.cases.do]]
121+
number = "TipThermoModel::getTipMaxInC()"
122+
places = 6
123+
124+
[[function.body.cases]]
125+
value = "8"
126+
comment = "System Uptime"
127+
[[function.body.cases.do]]
128+
number = "xTaskGetTickCount() / TICKS_100MS"
129+
places = 8
130+
131+
[[function.body.cases]]
132+
value = "9"
133+
comment = "Movement Timestamp"
134+
[[function.body.cases.do]]
135+
number = "lastMovementTime / TICKS_100MS"
136+
places = 8
137+
138+
[[function.body.cases]]
139+
value = "10"
140+
comment = "Tip Resistance in Ω"
141+
[[function.body.cases.do]]
142+
# large to pad over so that we cover ID left overs
143+
number = "getTipResistanceX10() / 10"
144+
places = 6
145+
[[function.body.cases.do]]
146+
symbol = "SmallSymbolDot"
147+
[[function.body.cases.do]]
148+
number = "getTipResistanceX10() % 10"
149+
places = 1
150+
151+
[[function.body.cases]]
152+
value = "11"
153+
comment = "Raw Tip in µV"
154+
[[function.body.cases.do]]
155+
number = "TipThermoModel::convertTipRawADCTouV(getTipRawTemp(0), true)"
156+
places = 8
157+
158+
[[function.body.cases]]
159+
value = "12"
160+
comment = "Tip Cold Junction Compensation Offset in µV"
161+
[[function.body.cases.do]]
162+
number = "getSettingValue(SettingsOptions::CalibrationOffset)"
163+
places = 8
164+
165+
[[function.body.cases]]
166+
value = "13"
167+
comment = "High Water Mark for GUI"
168+
[[function.body.cases.do]]
169+
number = "uxTaskGetStackHighWaterMark(GUITaskHandle)"
170+
places = 8
171+
172+
[[function.body.cases]]
173+
value = "14"
174+
comment = "High Water Mark for Movement Task"
175+
[[function.body.cases.do]]
176+
number = "uxTaskGetStackHighWaterMark(MOVTaskHandle)"
177+
places = 8
178+
179+
[[function.body.cases]]
180+
value = "15"
181+
comment = "High Water Mark for PID Task"
182+
[[function.body.cases.do]]
183+
number = "uxTaskGetStackHighWaterMark(PIDTaskHandle)"
184+
places = 8
185+
[[function.body.cases.do]]
186+
# NOTE: original C++ has a duplicate `break;` here (unreachable after
187+
# the auto-emitted one); preserved verbatim.
188+
expr = "break"
189+
190+
[[function.body.cases]]
191+
value = "16"
192+
comment = "Raw Hall Effect Value"
193+
features = ["HALL_SENSOR"]
194+
brace = true
195+
[[function.body.cases.do]]
196+
local = "int16_t hallEffectStrength = getRawHallEffect()"
197+
[[function.body.cases.do]]
198+
cond = true
199+
[[function.body.cases.do.branches]]
200+
when = "hallEffectStrength < 0"
201+
[[function.body.cases.do.branches.do]]
202+
target = "hallEffectStrength"
203+
value = "-hallEffectStrength"
204+
[[function.body.cases.do]]
205+
number = "hallEffectStrength"
206+
places = 6
207+
208+
[[function.body.cases]]
209+
default = true
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# draw_homescreen_detailed — two display modes (disconnected-tip vs
2+
# normal). All position differences between the resolutions live in
3+
# the `[anchors.*]` and `[image_sizes.*]` tables.
4+
5+
[file]
6+
declarations = [
7+
"extern uint8_t buttonAF[sizeof(buttonA)];",
8+
"extern uint8_t buttonBF[sizeof(buttonB)];",
9+
"extern uint8_t disconnectedTipF[sizeof(disconnectedTip)];",
10+
]
11+
12+
# ───── per-resolution positions / sizes ─────
13+
14+
[anchors.96x16]
15+
disc_xy = { lh = [ 0, 0], rh = [54, 0] }
16+
volt_cur = { lh = [42, 0], rh = [-1, 0] }
17+
volt_unit = { lh = [91, 8], rh = [48, 8] }
18+
set_temp = { lh = [73, 0], rh = [ 6, 0] }
19+
volt_pos = { lh = [67, 8], rh = [ 0, 8] }
20+
21+
[anchors.128x32]
22+
disc_xy = { lh = [ 0, 0], rh = [54, 0] }
23+
volt_cur = { lh = [56, 0], rh = [-1, 0] }
24+
volt_unit = { lh = [91, 8], rh = [48, 8] }
25+
set_temp = { lh = [73, 0], rh = [ 6, 0] }
26+
volt_pos = { lh = [67, 8], rh = [ 0, 8] }
27+
28+
[image_sizes.96x16]
29+
disc_tip = [42, 16]
30+
31+
[image_sizes.128x32]
32+
disc_tip = [56, 32]
33+
34+
# ───── ui_draw_homescreen_detailed ─────
35+
36+
[[function]]
37+
name = "ui_draw_homescreen_detailed"
38+
args = ["TemperatureType_t tipTemp"]
39+
40+
[[function.body]]
41+
cond = true
42+
43+
[[function.body.branches]]
44+
when = "isTipDisconnected()"
45+
46+
[[function.body.branches.do]]
47+
image = "disconnectedTip"
48+
flip = "auto"
49+
at = "disc_xy"
50+
size = "disc_tip"
51+
52+
[[function.body.branches.do]]
53+
cursor = "volt_cur"
54+
55+
[[function.body.branches.do]]
56+
local = "uint32_t Vlt = getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), 0)"
57+
58+
[[function.body.branches.do]]
59+
number = "Vlt / 10"
60+
places = 2
61+
font = "large"
62+
63+
[[function.body.branches.do]]
64+
symbol = "LargeSymbolDot"
65+
font = "large"
66+
67+
[[function.body.branches.do]]
68+
number = "Vlt % 10"
69+
places = 1
70+
font = "large"
71+
72+
[[function.body.branches.do]]
73+
cursor = "volt_unit"
74+
75+
[[function.body.branches.do]]
76+
symbol = "SmallSymbolVolts"
77+
font = "small"
78+
79+
# else — tip connected
80+
[[function.body.branches]]
81+
82+
# Blink temp if setting enabled and temp > 55° (1000 tick/sec, OFF 300ms ON 700ms)
83+
[[function.body.branches.do]]
84+
cond = true
85+
[[function.body.branches.do.branches]]
86+
when = "!(getSettingValue(SettingsOptions::CoolingTempBlink) && (tipTemp > 55) && (xTaskGetTickCount() % 1000 < 300))"
87+
[[function.body.branches.do.branches.do]]
88+
call = "ui_draw_tip_temperature"
89+
args = ["true", "FontStyle::LARGE"]
90+
91+
# top right — draw set temp
92+
[[function.body.branches.do]]
93+
cursor = "set_temp"
94+
95+
[[function.body.branches.do]]
96+
number = "getSettingValue(SettingsOptions::SolderingTemp)"
97+
places = 3
98+
font = "small"
99+
100+
[[function.body.branches.do]]
101+
deg_symbol = "small"
102+
103+
# bottom right — draw voltage then symbol (v)
104+
[[function.body.branches.do]]
105+
cursor = "volt_pos"
106+
107+
[[function.body.branches.do]]
108+
call = "printVoltage"
109+
110+
[[function.body.branches.do]]
111+
symbol = "SmallSymbolVolts"
112+
font = "small"

0 commit comments

Comments
 (0)