Skip to content

Commit cfbf57a

Browse files
ported Horus script to the new file structure/split
1 parent 39c00e4 commit cfbf57a

File tree

2 files changed

+50
-20
lines changed

2 files changed

+50
-20
lines changed

Makefile

+8-3
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@ tmp_install: $(tmp_dirs)
1313
cp common/*.lua tmp/SCRIPTS/BF
1414

1515
.PHONY: all
16-
all: X7 X9
16+
all: X7 X9 Horus
1717

1818
.PHONY: X7
1919
X7: tmp_install
2020
cp X7.lua tmp/SCRIPTS/TELEMETRY/BF.lua
21-
cd tmp && zip ../BFSetup-X7-$(VERSION).zip SCRIPTS/BF/* SCRIPTS/TELEMETRY/*
21+
cd tmp && zip ../BFSetup-X7-$(VERSION).zip SCRIPTS/BF/ui.lua SCRIPTS/BF/msp_sp.lua SCRIPTS/TELEMETRY/BF.lua
2222

2323
.PHONY: X9
2424
X9: tmp_install
2525
cp X9.lua tmp/SCRIPTS/TELEMETRY/BF.lua
26-
cd tmp && zip ../BFSetup-X9-$(VERSION).zip SCRIPTS/BF/* SCRIPTS/TELEMETRY/*
26+
cd tmp && zip ../BFSetup-X9-$(VERSION).zip SCRIPTS/BF/ui.lua SCRIPTS/BF/msp_sp.lua SCRIPTS/TELEMETRY/BF.lua
27+
28+
.PHONY: Horus
29+
Horus: tmp_install
30+
cp Horus.lua tmp/SCRIPTS/BF.lua
31+
cd tmp && zip ../BFSetup-Horus-$(VERSION).zip SCRIPTS/BF/ui.lua SCRIPTS/BF/msp_sp.lua SCRIPTS/BF.lua

common/ui.lua

+42-17
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ local saveTimeout = 0
3434
local saveRetries = 0
3535
local saveMaxRetries = 0
3636

37+
backgroundFill = backgroundFill or ERASE
38+
foregroundColor = foregroundColor or SOLID
39+
globalTextOptions = globalTextOptions or 0
40+
3741
local function saveSettings(new)
3842
local page = SetupPages[currentPage]
3943
if page.values then
@@ -153,21 +157,26 @@ local function requestPage(page)
153157
end
154158
end
155159

160+
function drawScreenTitle(screen_title)
161+
lcd.drawFilledRectangle(0, 0, LCD_W, 10, SOLID)
162+
lcd.drawText(1,1,screen_title,INVERS)
163+
end
164+
156165
local function drawScreen(page,page_locked)
157166

158167
local screen_title = page.title
159168

160-
lcd.drawText(1,1,"Betaflight / "..screen_title,INVERS)
169+
drawScreenTitle("Betaflight / "..screen_title)
161170

162171
for i=1,#(page.text) do
163172
local f = page.text[i]
164-
lcd.drawText(f.x, f.y, f.t, text_options)
173+
lcd.drawText(f.x, f.y, f.t, globalTextOptions)
165174
end
166175

167176
for i=1,#(page.fields) do
168177
local f = page.fields[i]
169178

170-
local text_options = 0
179+
local text_options = globalTextOptions
171180
if i == currentLine then
172181
text_options = INVERS
173182
if gState == EDITING then
@@ -178,7 +187,7 @@ local function drawScreen(page,page_locked)
178187
local spacing = 20
179188

180189
if f.t ~= nil then
181-
lcd.drawText(f.x, f.y, f.t .. ":", 0)
190+
lcd.drawText(f.x, f.y, f.t .. ":", globalTextOptions)
182191

183192
-- draw some value
184193
if f.sp ~= nil then
@@ -231,16 +240,17 @@ local function drawMenu()
231240
local h_line = MenuBox.h_line
232241
local h_offset = MenuBox.h_offset
233242
local h = #(menuList) * h_line + h_offset*2
234-
lcd.drawFilledRectangle(x,y,w,h,ERASE)
235-
lcd.drawRectangle(x,y,w-1,h-1,SOLID)
236-
lcd.drawText(x+h_line/2,y+h_offset,"Menu:")
243+
244+
lcd.drawFilledRectangle(x,y,w,h,backgroundFill)
245+
lcd.drawRectangle(x,y,w-1,h-1,foregroundColor)
246+
lcd.drawText(x+h_line/2,y+h_offset,"Menu:",globalTextOptions)
237247

238248
for i,e in ipairs(menuList) do
249+
local text_options = globalTextOptions
239250
if menuActive == i then
240-
lcd.drawText(x+MenuBox.x_offset,y+(i-1)*h_line+h_offset,e.t,INVERS)
241-
else
242-
lcd.drawText(x+MenuBox.x_offset,y+(i-1)*h_line+h_offset,e.t)
251+
text_options = text_options + INVERS
243252
end
253+
lcd.drawText(x+MenuBox.x_offset,y+(i-1)*h_line+h_offset,e.t,text_options)
244254
end
245255
end
246256

@@ -271,9 +281,15 @@ local function run_ui(event)
271281
mspProcessTxQ()
272282

273283
-- navigation
274-
if (event == EVT_MENU_LONG) then
284+
if (event == EVT_MENU_LONG) then -- Taranis QX7 / X9
275285
menuActive = 1
276286
gState = MENU_DISP
287+
288+
elseif EVT_PAGEUP_FIRST and (event == EVT_ENTER_LONG) then -- Horus
289+
menuActive = 1
290+
killEnterBreak = 1
291+
gState = MENU_DISP
292+
277293
-- menu is currently displayed
278294
elseif gState == MENU_DISP then
279295
if event == EVT_EXIT_BREAK then
@@ -283,12 +299,18 @@ local function run_ui(event)
283299
elseif event == EVT_MINUS_BREAK or event == EVT_ROT_RIGHT then
284300
incMenu(1)
285301
elseif event == EVT_ENTER_BREAK then
286-
gState = PAGE_DISPLAY
287-
menuList[menuActive].f()
302+
if killEnterBreak == 1 then
303+
killEnterBreak = 0
304+
else
305+
gState = PAGE_DISPLAY
306+
menuList[menuActive].f()
307+
end
288308
end
289309
-- normal page viewing
290310
elseif gState <= PAGE_DISPLAY then
291-
if event == EVT_MENU_BREAK then
311+
if event == EVT_PAGEUP_FIRST then
312+
incPage(-1)
313+
elseif event == EVT_MENU_BREAK or event == EVT_PAGEDN_FIRST then
292314
incPage(1)
293315
elseif event == EVT_PLUS_BREAK or event == EVT_ROT_LEFT then
294316
incLine(-1)
@@ -324,21 +346,24 @@ local function run_ui(event)
324346

325347
-- draw screen
326348
lcd.clear()
349+
if TEXT_BGCOLOR then
350+
lcd.drawFilledRectangle(0, 0, LCD_W, LCD_H, TEXT_BGCOLOR)
351+
end
327352
drawScreen(page,page_locked)
328353

329354
-- do we have valid telemetry data?
330355
if getValue("RSSI") == 0 then
331356
-- No!
332357
lcd.drawText(NoTelem[1],NoTelem[2],NoTelem[3],NoTelem[4])
333-
invalidatePages()
358+
--invalidatePages()
334359
end
335360

336361
if gState == MENU_DISP then
337362
drawMenu()
338363
elseif gState == PAGE_SAVING then
339-
lcd.drawFilledRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,ERASE)
364+
lcd.drawFilledRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,backgroundFill)
340365
lcd.drawRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,SOLID)
341-
lcd.drawText(SaveBox.x+SaveBox.x_offset,SaveBox.y+SaveBox.h_offset,"Saving...",DBLSIZE + BLINK)
366+
lcd.drawText(SaveBox.x+SaveBox.x_offset,SaveBox.y+SaveBox.h_offset,"Saving...",DBLSIZE + BLINK + (globalTextOptions))
342367
end
343368

344369
processMspReply(mspPollReply())

0 commit comments

Comments
 (0)