Skip to content

Virtual events #257

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 13, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
20 changes: 10 additions & 10 deletions src/SCRIPTS/BF/HORUS/horuspre.lua
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
PageFiles =
{
"pids1.lua",
"pids2.lua",
"rates.lua",
"pid_advanced.lua",
"filters.lua",
"pwm.lua",
"rx.lua",
"vtx.lua",
"rescue.lua",
"gpspids.lua",
{ title = "PIDs 1", script = "pids1.lua"},
{ title = "PIDs 2", script = "pids2.lua"},
{ title = "Rates", script = "rates.lua"},
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
{ title = "Filters", script = "filters.lua"},
{ title = "vTX Settings", script = "vtx.lua"},
{ title = "Gyro / Motor", script = "pwm.lua"},
{ title = "Rx", script = "rx.lua"},
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
}

MenuBox = { x=120, y=100, w=200, x_offset=68, h_line=20, h_offset=6 }
Expand Down
20 changes: 10 additions & 10 deletions src/SCRIPTS/BF/NV14/nv14pre.lua
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
PageFiles =
{
"pids1.lua",
"pids2.lua",
"rates.lua",
"pid_advanced.lua",
"filters.lua",
"pwm.lua",
"rx.lua",
"vtx.lua",
"rescue.lua",
"gpspids.lua",
{ title = "PIDs 1", script = "pids1.lua"},
{ title = "PIDs 2", script = "pids2.lua"},
{ title = "Rates", script = "rates.lua"},
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
{ title = "Filters", script = "filters.lua"},
{ title = "vTX Settings", script = "vtx.lua"},
{ title = "Gyro / Motor", script = "pwm.lua"},
{ title = "Rx", script = "rx.lua"},
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
}

MenuBox = { x= (LCD_W -200)/2, y=LCD_H/2, w=200, x_offset=68, h_line=20, h_offset=6 }
Expand Down
18 changes: 9 additions & 9 deletions src/SCRIPTS/BF/X7/x7pre.lua
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
PageFiles =
{
"pids1.lua",
"pids2.lua",
"rates.lua",
"pid_advanced.lua",
"filters.lua",
"pwm.lua",
"vtx.lua",
"rescue.lua",
"gpspids.lua",
{ title = "vTX Settings", script = "vtx.lua"},
{ title = "Gyro / Motor", script = "pwm.lua"},
{ title = "PIDs 1", script = "pids1.lua"},
{ title = "PIDs 2", script = "pids2.lua"},
{ title = "Rates", script = "rates.lua"},
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
{ title = "Filters", script = "filters.lua"},
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
}

MenuBox = { x=15, y=12, w=100, x_offset=36, h_line=8, h_offset=3 }
Expand Down
20 changes: 10 additions & 10 deletions src/SCRIPTS/BF/X9/x9pre.lua
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
PageFiles =
{
"pids1.lua",
"pids2.lua",
"rates.lua",
"pid_advanced.lua",
"filters.lua",
"pwm.lua",
"rx.lua",
"vtx.lua",
"rescue.lua",
"gpspids.lua",
{ title = "PIDs 1", script = "pids1.lua"},
{ title = "PIDs 2", script = "pids2.lua"},
{ title = "Rates", script = "rates.lua"},
{ title = "Advanced PIDs", script = "pid_advanced.lua"},
{ title = "Filters", script = "filters.lua"},
{ title = "vTX Settings", script = "vtx.lua"},
{ title = "Gyro / Motor", script = "pwm.lua"},
{ title = "Rx", script = "rx.lua"},
{ title = "GPS Rescue", script = "rescue.lua", requiredVersion = 1.041},
{ title = "GPS PIDs", script = "gpspids.lua", requiredVersion = 1.041},
}

MenuBox = { x=40, y=12, w=120, x_offset=36, h_line=8, h_offset=3 }
Expand Down
96 changes: 74 additions & 22 deletions src/SCRIPTS/BF/ui.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ local pageStatus =
display = 2,
editing = 3,
saving = 4,
displayMenu = 5,
popupMenu = 5,
mainMenu = 6,
}

local uiMsp =
Expand All @@ -12,7 +13,8 @@ local uiMsp =
eepromWrite = 250
}

local currentState = pageStatus.display
local menuLine = 1
local currentState = pageStatus.mainMenu
local requestTimeout = 80 -- 800ms request timeout
local currentPage = 1
local currentLine = 1
Expand All @@ -22,9 +24,10 @@ local saveRetries = 0
local saveMaxRetries = 0
local pageRequested = false
local telemetryScreenActive = false
local menuActive = false
local popupMenuActive = false
local lastRunTS = 0
local killEnterBreak = 0
local stopDisplay = true
local scrollPixelsY = 0

local Page = nil
Expand Down Expand Up @@ -72,7 +75,7 @@ local function eepromWrite()
protocol.mspRead(uiMsp.eepromWrite)
end

local menuList = {
local popupMenuList = {
{
t = "save page",
f = saveSettings
Expand Down Expand Up @@ -151,8 +154,12 @@ local function incLine(inc)
currentLine = clipValue(currentLine + inc, 1, #(Page.fields))
end

local function incMenu(inc)
menuActive = clipValue(menuActive + inc, 1, #(menuList))
local function incMainMenu(inc)
menuLine = clipValue(menuLine + inc, 1, #(PageFiles))
end

local function incPopupMenu(inc)
popupMenuActive = clipValue(popupMenuActive + inc, 1, #(popupMenuList))
end

local function requestPage()
Expand Down Expand Up @@ -258,21 +265,21 @@ local function incValue(inc)
end
end

local function drawMenu()
local function drawPopupMenu()
local x = MenuBox.x
local y = MenuBox.y
local w = MenuBox.w
local h_line = MenuBox.h_line
local h_offset = MenuBox.h_offset
local h = #(menuList) * h_line + h_offset*2
local h = #(popupMenuList) * h_line + h_offset*2

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

for i,e in ipairs(menuList) do
for i,e in ipairs(popupMenuList) do
local text_options = globalTextOptions
if menuActive == i then
if popupMenuActive == i then
text_options = text_options + INVERS
end
lcd.drawText(x+MenuBox.x_offset,y+(i-1)*h_line+h_offset,e.t,text_options)
Expand All @@ -284,6 +291,11 @@ function run_ui(event)
-- if lastRunTS old than 500ms
if lastRunTS + 50 < now then
invalidatePages()
if useMenu then
currentState = pageStatus.mainMenu
else
currentState = pageStatus.display
end
end
lastRunTS = now
if (currentState == pageStatus.saving) then
Expand All @@ -301,26 +313,26 @@ function run_ui(event)
mspProcessTxQ()
-- navigation
if isTelemetryScript and event == EVT_VIRTUAL_MENU_LONG then -- telemetry script
menuActive = 1
currentState = pageStatus.displayMenu
popupMenuActive = 1
currentState = pageStatus.popupMenu
elseif (not isTelemetryScript) and event == EVT_VIRTUAL_ENTER_LONG then -- standalone
menuActive = 1
popupMenuActive = 1
killEnterBreak = 1
currentState = pageStatus.displayMenu
currentState = pageStatus.popupMenu
-- menu is currently displayed
elseif currentState == pageStatus.displayMenu then
elseif currentState == pageStatus.popupMenu then
if event == EVT_VIRTUAL_EXIT then
currentState = pageStatus.display
elseif event == EVT_VIRTUAL_PREV then
incMenu(-1)
incPopupMenu(-1)
elseif event == EVT_VIRTUAL_NEXT then
incMenu(1)
incPopupMenu(1)
elseif event == EVT_VIRTUAL_ENTER then
if killEnterBreak == 1 then
killEnterBreak = 0
else
currentState = pageStatus.display
menuList[menuActive].f()
popupMenuList[popupMenuActive].f()
end
end
-- normal page viewing
Expand All @@ -341,7 +353,11 @@ function run_ui(event)
currentState = pageStatus.editing
end
elseif event == EVT_VIRTUAL_EXIT then
return protocol.exitFunc();
if useMenu then
stopDisplay = true
else
return protocol.exitFunc();
end
end
-- editing value
elseif currentState == pageStatus.editing then
Expand All @@ -356,7 +372,7 @@ function run_ui(event)
end
local nextPage = currentPage
while Page == nil do
Page = assert(loadScript(radio.templateHome .. PageFiles[currentPage]))()
Page = assert(loadScript(radio.templateHome .. PageFiles[currentPage].script))()
if Page.requiredVersion and apiVersion > 0 and Page.requiredVersion > apiVersion then
incPage(1)

Expand All @@ -379,8 +395,8 @@ function run_ui(event)
if protocol.rssi() == 0 then
lcd.drawText(NoTelem[1],NoTelem[2],NoTelem[3],NoTelem[4])
end
if currentState == pageStatus.displayMenu then
drawMenu()
if currentState == pageStatus.popupMenu then
drawPopupMenu()
elseif currentState == pageStatus.saving then
lcd.drawFilledRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,backgroundFill)
lcd.drawRectangle(SaveBox.x,SaveBox.y,SaveBox.w,SaveBox.h,SOLID)
Expand All @@ -390,6 +406,42 @@ function run_ui(event)
lcd.drawText(SaveBox.x+SaveBox.x_offset,SaveBox.y+SaveBox.h_offset,"Retrying",DBLSIZE + (globalTextOptions))
end
end
if currentState == pageStatus.mainMenu and useMenu then
if event == EVT_VIRTUAL_EXIT then
return 2
elseif event == EVT_VIRTUAL_NEXT then
incMainMenu(1)
elseif event == EVT_VIRTUAL_PREV then
incMainMenu(-1)
end
lcd.clear()
lcd.drawScreenTitle("Betaflight Config", 0, 0)
for i=1, #PageFiles do
local yMinLim = 10
local yMaxLim = LCD_H - 8
local currentLineY = (menuLine-1)*8 + yMinLim
if currentLineY <= yMaxLim then
scrollPixelsY = 0
elseif currentLineY - scrollPixelsY <= yMinLim then
scrollPixelsY = currentLineY - yMinLim*2
elseif currentLineY - scrollPixelsY >= yMaxLim then
scrollPixelsY = currentLineY - yMaxLim + 6
end
local attr = (menuLine == i and INVERS or 0)
if event == EVT_VIRTUAL_ENTER and attr == INVERS then
Page = assert(loadScript(radio.templateHome .. PageFiles[i].script))()
currentPage = i
currentState = pageStatus.display
end
if ((i-1)*8 + yMinLim - scrollPixelsY) >= yMinLim and ((i-1)*8 + yMinLim - scrollPixelsY) <= yMaxLim then
lcd.drawText(6, (i-1)*8 + yMinLim - scrollPixelsY, PageFiles[i].title, attr)
end
end
end
if stopDisplay then
currentState = pageStatus.mainMenu
stopDisplay = false
end
processMspReply(mspPollReply())
return 0
end
Expand Down
4 changes: 2 additions & 2 deletions src/BF/bf.lua → src/SCRIPTS/TOOLS/bf.lua
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
local toolName = "TNS|Betaflight setup|TNE"
SCRIPT_HOME = "/SCRIPTS/BF"

apiVersion = 0
useMenu = true

protocol = assert(loadScript(SCRIPT_HOME.."/protocols.lua"))()
radio = assert(loadScript(SCRIPT_HOME.."/radios.lua"))()
Expand All @@ -9,8 +11,6 @@ assert(loadScript(radio.preLoad))()
assert(loadScript(protocol.transport))()
assert(loadScript(SCRIPT_HOME.."/MSP/common.lua"))()

isTelemetryScript = false

local run_ui = assert(loadScript(SCRIPT_HOME.."/ui.lua"))()

return { run=run_ui }