Skip to content

Commit 5c1ba0c

Browse files
committed
Add menu only for tools screen.
1 parent 746515b commit 5c1ba0c

File tree

6 files changed

+112
-59
lines changed

6 files changed

+112
-59
lines changed

src/SCRIPTS/BF/HORUS/horuspre.lua

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
PageFiles =
22
{
3-
"pids1.lua",
4-
"pids2.lua",
5-
"rates.lua",
6-
"pid_advanced.lua",
7-
"filters.lua",
8-
"pwm.lua",
9-
"rx.lua",
10-
"vtx.lua",
11-
"rescue.lua",
12-
"gpspids.lua",
3+
{ title = "PIDs 1", script = "pids1.lua"},
4+
{ title = "PIDs 2", script = "pids2.lua"},
5+
{ title = "Rates", script = "rates.lua"},
6+
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
7+
{ title = "Filters", script = "filters.lua"},
8+
{ title = "vTX Settings", script = "vtx.lua"},
9+
{ title = "Gyro / Motor", script = "pwm.lua"},
10+
{ title = "Rx", script = "rx.lua"},
11+
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
12+
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
1313
}
1414

1515
MenuBox = { x=120, y=100, w=200, x_offset=68, h_line=20, h_offset=6 }

src/SCRIPTS/BF/NV14/nv14pre.lua

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
PageFiles =
22
{
3-
"pids1.lua",
4-
"pids2.lua",
5-
"rates.lua",
6-
"pid_advanced.lua",
7-
"filters.lua",
8-
"pwm.lua",
9-
"rx.lua",
10-
"vtx.lua",
11-
"rescue.lua",
12-
"gpspids.lua",
3+
{ title = "PIDs 1", script = "pids1.lua"},
4+
{ title = "PIDs 2", script = "pids2.lua"},
5+
{ title = "Rates", script = "rates.lua"},
6+
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
7+
{ title = "Filters", script = "filters.lua"},
8+
{ title = "vTX Settings", script = "vtx.lua"},
9+
{ title = "Gyro / Motor", script = "pwm.lua"},
10+
{ title = "Rx", script = "rx.lua"},
11+
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
12+
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
1313
}
1414

1515
MenuBox = { x= (LCD_W -200)/2, y=LCD_H/2, w=200, x_offset=68, h_line=20, h_offset=6 }

src/SCRIPTS/BF/X7/x7pre.lua

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
PageFiles =
22
{
3-
"pids1.lua",
4-
"pids2.lua",
5-
"rates.lua",
6-
"pid_advanced.lua",
7-
"filters.lua",
8-
"pwm.lua",
9-
"vtx.lua",
10-
"rescue.lua",
11-
"gpspids.lua",
3+
{ title = "vTX Settings", script = "vtx.lua"},
4+
{ title = "Gyro / Motor", script = "pwm.lua"},
5+
{ title = "PIDs 1", script = "pids1.lua"},
6+
{ title = "PIDs 2", script = "pids2.lua"},
7+
{ title = "Rates", script = "rates.lua"},
8+
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
9+
{ title = "Filters", script = "filters.lua"},
10+
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
11+
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
1212
}
1313

1414
MenuBox = { x=15, y=12, w=100, x_offset=36, h_line=8, h_offset=3 }

src/SCRIPTS/BF/X9/x9pre.lua

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
PageFiles =
22
{
3-
"pids1.lua",
4-
"pids2.lua",
5-
"rates.lua",
6-
"pid_advanced.lua",
7-
"filters.lua",
8-
"pwm.lua",
9-
"rx.lua",
10-
"vtx.lua",
11-
"rescue.lua",
12-
"gpspids.lua",
3+
{ title = "PIDs 1", script = "pids1.lua"},
4+
{ title = "PIDs 2", script = "pids2.lua"},
5+
{ title = "Rates", script = "rates.lua"},
6+
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
7+
{ title = "Filters", script = "filters.lua"},
8+
{ title = "vTX Settings", script = "vtx.lua"},
9+
{ title = "Gyro / Motor", script = "pwm.lua"},
10+
{ title = "Rx", script = "rx.lua"},
11+
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
12+
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
1313
}
1414

1515
MenuBox = { x=40, y=12, w=120, x_offset=36, h_line=8, h_offset=3 }

src/SCRIPTS/BF/ui.lua

Lines changed: 72 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ local pageStatus =
33
display = 2,
44
editing = 3,
55
saving = 4,
6-
displayMenu = 5,
6+
popupMenu = 5,
7+
mainMenu = 6,
78
}
89

910
local uiMsp =
@@ -12,7 +13,8 @@ local uiMsp =
1213
eepromWrite = 250
1314
}
1415

15-
local currentState = pageStatus.display
16+
local menuLine = 1
17+
local currentState = pageStatus.mainMenu
1618
local requestTimeout = 80 -- 800ms request timeout
1719
local currentPage = 1
1820
local currentLine = 1
@@ -22,9 +24,10 @@ local saveRetries = 0
2224
local saveMaxRetries = 0
2325
local pageRequested = false
2426
local telemetryScreenActive = false
25-
local menuActive = false
27+
local popupMenuActive = false
2628
local lastRunTS = 0
2729
local killEnterBreak = 0
30+
local stopDisplay = true
2831
local scrollPixelsY = 0
2932

3033
local Page = nil
@@ -72,7 +75,7 @@ local function eepromWrite()
7275
protocol.mspRead(uiMsp.eepromWrite)
7376
end
7477

75-
local menuList = {
78+
local popupMenuList = {
7679
{
7780
t = "save page",
7881
f = saveSettings
@@ -151,8 +154,12 @@ local function incLine(inc)
151154
currentLine = clipValue(currentLine + inc, 1, #(Page.fields))
152155
end
153156

154-
local function incMenu(inc)
155-
menuActive = clipValue(menuActive + inc, 1, #(menuList))
157+
local function incMainMenu(inc)
158+
menuLine = clipValue(menuLine + inc, 1, #(PageFiles))
159+
end
160+
161+
local function incPopupMenu(inc)
162+
popupMenuActive = clipValue(popupMenuActive + inc, 1, #(popupMenuList))
156163
end
157164

158165
local function requestPage()
@@ -258,21 +265,21 @@ local function incValue(inc)
258265
end
259266
end
260267

261-
local function drawMenu()
268+
local function drawPopupMenu()
262269
local x = MenuBox.x
263270
local y = MenuBox.y
264271
local w = MenuBox.w
265272
local h_line = MenuBox.h_line
266273
local h_offset = MenuBox.h_offset
267-
local h = #(menuList) * h_line + h_offset*2
274+
local h = #(popupMenuList) * h_line + h_offset*2
268275

269276
lcd.drawFilledRectangle(x,y,w,h,backgroundFill)
270277
lcd.drawRectangle(x,y,w-1,h-1,foregroundColor)
271278
lcd.drawText(x+h_line/2,y+h_offset,"Menu:",globalTextOptions)
272279

273-
for i,e in ipairs(menuList) do
280+
for i,e in ipairs(popupMenuList) do
274281
local text_options = globalTextOptions
275-
if menuActive == i then
282+
if popupMenuActive == i then
276283
text_options = text_options + INVERS
277284
end
278285
lcd.drawText(x+MenuBox.x_offset,y+(i-1)*h_line+h_offset,e.t,text_options)
@@ -284,6 +291,11 @@ function run_ui(event)
284291
-- if lastRunTS old than 500ms
285292
if lastRunTS + 50 < now then
286293
invalidatePages()
294+
if useMenu then
295+
currentState = pageStatus.mainMenu
296+
else
297+
currentState = pageStatus.display
298+
end
287299
end
288300
lastRunTS = now
289301
if (currentState == pageStatus.saving) then
@@ -301,24 +313,24 @@ function run_ui(event)
301313
mspProcessTxQ()
302314
-- navigation
303315
if (event == EVT_VIRTUAL_ENTER_LONG) then
304-
menuActive = 1
316+
popupMenuActive = 1
305317
killEnterBreak = 1
306-
currentState = pageStatus.displayMenu
318+
currentState = pageStatus.popupMenu
307319
killEvents(event)
308320
-- menu is currently displayed
309-
elseif currentState == pageStatus.displayMenu then
321+
elseif currentState == pageStatus.popupMenu then
310322
if event == EVT_VIRTUAL_EXIT then
311323
currentState = pageStatus.display
312324
elseif event == EVT_VIRTUAL_PREV then
313-
incMenu(-1)
325+
incPopupMenu(-1)
314326
elseif event == EVT_VIRTUAL_NEXT then
315-
incMenu(1)
327+
incPopupMenu(1)
316328
elseif event == EVT_VIRTUAL_ENTER then
317329
if killEnterBreak == 1 then
318330
killEnterBreak = 0
319331
else
320332
currentState = pageStatus.display
321-
menuList[menuActive].f()
333+
popupMenuList[popupMenuActive].f()
322334
end
323335
end
324336
-- normal page viewing
@@ -339,7 +351,11 @@ function run_ui(event)
339351
currentState = pageStatus.editing
340352
end
341353
elseif event == EVT_VIRTUAL_EXIT then
342-
return protocol.exitFunc();
354+
if useMenu then
355+
stopDisplay = true
356+
else
357+
return protocol.exitFunc();
358+
end
343359
end
344360
-- editing value
345361
elseif currentState == pageStatus.editing then
@@ -353,7 +369,7 @@ function run_ui(event)
353369
end
354370
local nextPage = currentPage
355371
while Page == nil do
356-
Page = assert(loadScript(radio.templateHome .. PageFiles[currentPage]))()
372+
Page = assert(loadScript(radio.templateHome .. PageFiles[currentPage].script))()
357373
if Page.requiredVersion and apiVersion > 0 and Page.requiredVersion > apiVersion then
358374
incPage(1)
359375

@@ -376,8 +392,8 @@ function run_ui(event)
376392
if protocol.rssi() == 0 then
377393
lcd.drawText(NoTelem[1],NoTelem[2],NoTelem[3],NoTelem[4])
378394
end
379-
if currentState == pageStatus.displayMenu then
380-
drawMenu()
395+
if currentState == pageStatus.popupMenu then
396+
drawPopupMenu()
381397
elseif currentState == pageStatus.saving then
382398
lcd.drawFilledRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,backgroundFill)
383399
lcd.drawRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,SOLID)
@@ -387,6 +403,42 @@ function run_ui(event)
387403
lcd.drawText(SaveBox.x+SaveBox.x_offset,SaveBox.y+SaveBox.h_offset,"Retrying",DBLSIZE + (globalTextOptions))
388404
end
389405
end
406+
if currentState == pageStatus.mainMenu and useMenu then
407+
if event == EVT_VIRTUAL_EXIT then
408+
return 2
409+
elseif event == EVT_VIRTUAL_NEXT then
410+
incMainMenu(1)
411+
elseif event == EVT_VIRTUAL_PREV then
412+
incMainMenu(-1)
413+
end
414+
lcd.clear()
415+
lcd.drawScreenTitle("Betaflight Config", 0, 0)
416+
for i=1, #PageFiles do
417+
local yMinLim = 10
418+
local yMaxLim = LCD_H - 8
419+
local currentLineY = (menuLine-1)*8 + yMinLim
420+
if currentLineY <= yMaxLim then
421+
scrollPixelsY = 0
422+
elseif currentLineY - scrollPixelsY <= yMinLim then
423+
scrollPixelsY = currentLineY - yMinLim*2
424+
elseif currentLineY - scrollPixelsY >= yMaxLim then
425+
scrollPixelsY = currentLineY - yMaxLim + 6
426+
end
427+
local attr = (menuLine == i and INVERS or 0)
428+
if event == EVT_VIRTUAL_ENTER and attr == INVERS then
429+
Page = assert(loadScript(radio.templateHome .. PageFiles[i].script))()
430+
currentPage = i
431+
currentState = pageStatus.display
432+
end
433+
if ((i-1)*8 + yMinLim - scrollPixelsY) >= yMinLim and ((i-1)*8 + yMinLim - scrollPixelsY) <= yMaxLim then
434+
lcd.drawText(6, (i-1)*8 + yMinLim - scrollPixelsY, PageFiles[i].title, attr)
435+
end
436+
end
437+
end
438+
if stopDisplay then
439+
currentState = pageStatus.mainMenu
440+
stopDisplay = false
441+
end
390442
processMspReply(mspPollReply())
391443
return 0
392444
end

src/SCRIPTS/TOOLS/bf.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ local toolName = "TNS|Betaflight setup|TNE"
22
SCRIPT_HOME = "/SCRIPTS/BF"
33

44
apiVersion = 0
5+
useMenu = true
56

67
protocol = assert(loadScript(SCRIPT_HOME.."/protocols.lua"))()
78
radio = assert(loadScript(SCRIPT_HOME.."/radios.lua"))()

0 commit comments

Comments
 (0)