#344 renderer integration with new assertion handling

This commit is contained in:
Mikayla Fischler
2023-09-30 13:31:41 -04:00
parent 560d48084a
commit d38a2dea7c
10 changed files with 116 additions and 50 deletions

View File

@@ -5,18 +5,23 @@
local panel_view = require("reactor-plc.panel.front_panel")
local style = require("reactor-plc.panel.style")
local core = require("graphics.core")
local flasher = require("graphics.flasher")
local DisplayBox = require("graphics.elements.displaybox")
---@class reactor_plc_renderer
local renderer = {}
local ui = {
display = nil
}
-- start the UI
function renderer.start_ui()
-- try to start the UI
---@return boolean success, any error_msg
function renderer.try_start_ui()
local status, msg = true, nil
if ui.display == nil then
-- reset terminal
term.setTextColor(colors.white)
@@ -30,12 +35,22 @@ function renderer.start_ui()
end
-- init front panel view
ui.display = DisplayBox{window=term.current(),fg_bg=style.root}
panel_view(ui.display)
status, msg = pcall(function ()
ui.display = DisplayBox{window=term.current(),fg_bg=style.root}
panel_view(ui.display)
end)
-- start flasher callback task
flasher.run()
if status then
-- start flasher callback task
flasher.run()
else
-- report fail and close ui
msg = core.extract_assert_msg(msg)
renderer.close_ui()
end
end
return status, msg
end
-- close out the UI

View File

@@ -19,7 +19,7 @@ local plc = require("reactor-plc.plc")
local renderer = require("reactor-plc.renderer")
local threads = require("reactor-plc.threads")
local R_PLC_VERSION = "v1.5.9"
local R_PLC_VERSION = "v1.5.10"
local println = util.println
local println_ts = util.println_ts
@@ -184,10 +184,9 @@ local function main()
-- front panel time!
if not renderer.ui_ready() then
local message
plc_state.fp_ok, message = pcall(renderer.start_ui)
plc_state.fp_ok, message = renderer.try_start_ui()
if not plc_state.fp_ok then
renderer.close_ui()
println_ts(util.c("UI error: ", message))
println("init> running without front panel")
log.error(util.c("front panel GUI render failed with error ", message))