#580 coordinator front panel updates for wired modem and new labeling
This commit is contained in:
@@ -28,6 +28,7 @@ local renderer = {}
|
||||
|
||||
-- render engine
|
||||
local engine = {
|
||||
config = nil, ---@type crd_config
|
||||
color_mode = 1, ---@type COLOR_MODE
|
||||
monitors = nil, ---@type crd_displays|nil
|
||||
dmesg_window = nil, ---@type Window|nil
|
||||
@@ -76,10 +77,11 @@ end
|
||||
-- apply renderer configurations
|
||||
---@param config crd_config
|
||||
function renderer.configure(config)
|
||||
style.set_themes(config.MainTheme, config.FrontPanelTheme, config.ColorMode)
|
||||
|
||||
engine.config = config
|
||||
engine.color_mode = config.ColorMode
|
||||
engine.disable_flow_view = config.DisableFlowView
|
||||
|
||||
style.set_themes(config.MainTheme, config.FrontPanelTheme, config.ColorMode)
|
||||
end
|
||||
|
||||
-- init all displays in use by the renderer
|
||||
@@ -130,7 +132,7 @@ function renderer.try_start_fp()
|
||||
-- show front panel view on terminal
|
||||
status, msg = pcall(function ()
|
||||
engine.ui.front_panel = DisplayBox{window=term.current(),fg_bg=style.fp.root}
|
||||
panel_view(engine.ui.front_panel, #engine.monitors.unit_displays)
|
||||
panel_view(engine.ui.front_panel, engine.config)
|
||||
end)
|
||||
|
||||
if status then
|
||||
|
||||
@@ -17,6 +17,7 @@ local core = require("graphics.core")
|
||||
local Div = require("graphics.elements.Div")
|
||||
local ListBox = require("graphics.elements.ListBox")
|
||||
local MultiPane = require("graphics.elements.MultiPane")
|
||||
local Rectangle = require("graphics.elements.Rectangle")
|
||||
local TextBox = require("graphics.elements.TextBox")
|
||||
|
||||
local TabBar = require("graphics.elements.controls.TabBar")
|
||||
@@ -30,13 +31,16 @@ local LINK_STATE = types.PANEL_LINK_STATE
|
||||
local ALIGN = core.ALIGN
|
||||
|
||||
local cpair = core.cpair
|
||||
local border = core.border
|
||||
|
||||
local led_grn = style.led_grn
|
||||
|
||||
-- create new front panel view
|
||||
---@param panel DisplayBox main displaybox
|
||||
---@param num_units integer number of units (number of unit monitors)
|
||||
local function init(panel, num_units)
|
||||
---@param config crd_config configuration
|
||||
local function init(panel, config)
|
||||
local s_hi_box = style.fp_theme.highlight_box
|
||||
|
||||
local ps = iocontrol.get_db().fp.ps
|
||||
|
||||
local term_w, term_h = term.getSize()
|
||||
@@ -60,7 +64,16 @@ local function init(panel, num_units)
|
||||
|
||||
heartbeat.register(ps, "heartbeat", heartbeat.update)
|
||||
|
||||
local modem = LED{parent=system,label="MODEM",colors=led_grn}
|
||||
if config.WirelessModem and config.WiredModem then
|
||||
local wd_modem = LED{parent=system,label="WD MODEM",colors=led_grn}
|
||||
local wl_modem = LED{parent=system,label="WL MODEM",colors=led_grn}
|
||||
wd_modem.register(ps, "has_wd_modem", wd_modem.update)
|
||||
wl_modem.register(ps, "has_wl_modem", wl_modem.update)
|
||||
else
|
||||
local modem = LED{parent=system,label="MODEM",colors=led_grn}
|
||||
modem.register(ps, "has_modem", modem.update)
|
||||
modem.register(ps, util.trinary(config.WirelessModem, "has_wl_modem", "has_wd_modem"), modem.update)
|
||||
end
|
||||
|
||||
if not style.colorblind then
|
||||
local network = RGBLED{parent=system,label="NETWORK",colors={colors.green,colors.red,colors.yellow,colors.orange,style.fp_ind_bkg}}
|
||||
@@ -97,48 +110,44 @@ local function init(panel, num_units)
|
||||
|
||||
system.line_break()
|
||||
|
||||
modem.register(ps, "has_modem", modem.update)
|
||||
|
||||
local speaker = LED{parent=system,label="SPEAKER",colors=led_grn}
|
||||
speaker.register(ps, "has_speaker", speaker.update)
|
||||
|
||||
system.line_break()
|
||||
|
||||
local rt_main = LED{parent=system,label="RT MAIN",colors=led_grn}
|
||||
local rt_render = LED{parent=system,label="RT RENDER",colors=led_grn}
|
||||
|
||||
rt_main.register(ps, "routine__main", rt_main.update)
|
||||
rt_render.register(ps, "routine__render", rt_render.update)
|
||||
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local comp_id = util.sprintf("(%d)", os.getComputerID())
|
||||
TextBox{parent=system,x=9,y=4,width=6,text=comp_id,fg_bg=style.fp.disabled_fg}
|
||||
local hmi_devs = Div{parent=main_page,width=16,height=17,x=18,y=2}
|
||||
|
||||
local displays = Div{parent=main_page,width=16,height=17,x=18,y=2}
|
||||
local speaker = LED{parent=hmi_devs,label="SPEAKER",colors=led_grn}
|
||||
speaker.register(ps, "has_speaker", speaker.update)
|
||||
|
||||
local main_disp = LEDPair{parent=displays,label="MAIN DISPLAY",off=style.fp_ind_bkg,c1=colors.red,c2=colors.green}
|
||||
hmi_devs.line_break()
|
||||
|
||||
local main_disp = LEDPair{parent=hmi_devs,label="MAIN DISPLAY",off=style.fp_ind_bkg,c1=colors.red,c2=colors.green}
|
||||
main_disp.register(ps, "main_monitor", main_disp.update)
|
||||
|
||||
local flow_disp = LEDPair{parent=displays,label="FLOW DISPLAY",off=style.fp_ind_bkg,c1=colors.red,c2=colors.green}
|
||||
local flow_disp = LEDPair{parent=hmi_devs,label="FLOW DISPLAY",off=style.fp_ind_bkg,c1=colors.red,c2=colors.green}
|
||||
flow_disp.register(ps, "flow_monitor", flow_disp.update)
|
||||
|
||||
displays.line_break()
|
||||
hmi_devs.line_break()
|
||||
|
||||
for i = 1, num_units do
|
||||
local unit_disp = LEDPair{parent=displays,label="UNIT "..i.." DISPLAY",off=style.fp_ind_bkg,c1=colors.red,c2=colors.green}
|
||||
for i = 1, config.UnitCount do
|
||||
local unit_disp = LEDPair{parent=hmi_devs,label="UNIT "..i.." DISPLAY",off=style.fp_ind_bkg,c1=colors.red,c2=colors.green}
|
||||
unit_disp.register(ps, "unit_monitor_" .. i, unit_disp.update)
|
||||
end
|
||||
|
||||
--
|
||||
-- about footer
|
||||
-- hardware labeling
|
||||
--
|
||||
|
||||
local about = Div{parent=main_page,width=15,height=2,y=term_h-3,fg_bg=style.fp.disabled_fg}
|
||||
local fw_v = TextBox{parent=about,text="FW: v00.00.00"}
|
||||
local comms_v = TextBox{parent=about,text="NT: v00.00.00"}
|
||||
local hw_labels = Rectangle{parent=main_page,y=term_h-7,width=15,height=5,border=border(1,s_hi_box.bkg,true),even_inner=true}
|
||||
|
||||
fw_v.register(ps, "version", function (version) fw_v.set_value(util.c("FW: ", version)) end)
|
||||
comms_v.register(ps, "comms_version", function (version) comms_v.set_value(util.c("NT: v", version)) end)
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local comp_id = util.sprintf("%03d", os.getComputerID())
|
||||
|
||||
TextBox{parent=hw_labels,text="FW "..ps.get("version"),fg_bg=s_hi_box}
|
||||
TextBox{parent=hw_labels,text="NT v"..ps.get("comms_version"),fg_bg=s_hi_box}
|
||||
TextBox{parent=hw_labels,text="S/N CRD-"..comp_id,fg_bg=s_hi_box}
|
||||
|
||||
--
|
||||
-- page handling
|
||||
|
||||
Reference in New Issue
Block a user