#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

@@ -133,19 +133,30 @@ function renderer.init_dmesg()
log.direct_dmesg(engine.dmesg_window)
end
-- start the coordinator front panel
function renderer.start_fp()
-- try to start the front panel
---@return boolean success, any error_msg
function renderer.try_start_fp()
local status, msg = true, nil
if not engine.fp_ready then
-- show front panel view on terminal
engine.ui.front_panel = DisplayBox{window=term.native(),fg_bg=style.fp.root}
panel_view(engine.ui.front_panel, #engine.monitors.unit_displays)
status, msg = pcall(function ()
engine.ui.front_panel = DisplayBox{window=term.native(),fg_bg=style.fp.root}
panel_view(engine.ui.front_panel, #engine.monitors.unit_displays)
end)
-- start flasher callback task
flasher.run()
-- report front panel as ready
engine.fp_ready = true
if status then
-- start flasher callback task and report ready
flasher.run()
engine.fp_ready = true
else
-- report fail and close front panel
msg = core.extract_assert_msg(msg)
renderer.close_fp()
end
end
return status, msg
end
-- close out the front panel
@@ -178,7 +189,7 @@ function renderer.close_fp()
end
end
-- start the coordinator GUI
-- try to start the main GUI
---@return boolean success, any error_msg
function renderer.try_start_ui()
local status, msg = true, nil

View File

@@ -22,7 +22,7 @@ local sounder = require("coordinator.sounder")
local apisessions = require("coordinator.session.apisessions")
local COORDINATOR_VERSION = "v1.0.15"
local COORDINATOR_VERSION = "v1.0.16"
local println = util.println
local println_ts = util.println_ts
@@ -182,9 +182,8 @@ local function main()
log_graphics("starting front panel UI...")
local fp_ok, fp_message = pcall(renderer.start_fp)
local fp_ok, fp_message = renderer.try_start_fp()
if not fp_ok then
renderer.close_fp()
log_graphics(util.c("front panel UI error: ", fp_message))
println_ts("front panel UI creation failed")
log.fatal(util.c("front panel GUI render failed with error ", fp_message))