#399 finished waste app indicators

This commit is contained in:
Mikayla Fischler 2024-11-18 23:50:34 -05:00
parent 532c15e258
commit fc603677ef
4 changed files with 44 additions and 15 deletions

View File

@ -105,6 +105,7 @@ function iocontrol.init(conf, comms, temp_scale, energy_scale)
auto_current_waste_product = types.WASTE_PRODUCT.PLUTONIUM,
auto_pu_fallback_active = false,
auto_sps_disabled = false,
waste_stats = { 0, 0, 0, 0, 0, 0 }, -- waste in, pu, po, po pellets, am, spent waste
radiation = types.new_zero_radiation_reading(),
@ -118,6 +119,7 @@ function iocontrol.init(conf, comms, temp_scale, energy_scale)
induction_ps_tbl = {}, ---@type psil[]
induction_data_tbl = {}, ---@type imatrix_session_db[]
sps_status = 1,
sps_ps_tbl = {}, ---@type psil[]
sps_data_tbl = {}, ---@type sps_session_db[]
@ -663,6 +665,8 @@ function iocontrol.update_facility_status(status)
-- SPS statuses
if type(rtu_statuses.sps) == "table" then
local comp_stat = 1
for id = 1, #fac.sps_ps_tbl do
if rtu_statuses.sps[id] == nil then
-- disconnected
@ -678,22 +682,26 @@ function iocontrol.update_facility_status(status)
local rtu_faulted = _record_multiblock_status(sps, data, ps)
if rtu_faulted then
ps.publish("computed_status", 3) -- faulted
comp_stat = 3 -- faulted
elseif data.formed then
if data.state.process_rate > 0 then
ps.publish("computed_status", 5) -- active
comp_stat = 5 -- active
else
ps.publish("computed_status", 4) -- idle
comp_stat = 4 -- idle
end
else
ps.publish("computed_status", 2) -- not formed
comp_stat = 2 -- not formed
end
ps.publish("computed_status", comp_stat)
io.facility.ps.publish("am_rate", data.state.process_rate * 1000)
else
log.debug(util.c(log_header, "invalid sps id ", id))
end
end
io.facility.sps_status = comp_stat
else
log.debug(log_header .. "sps list not a table")
valid = false
@ -1226,6 +1234,8 @@ function iocontrol.update_unit_statuses(statuses)
end
end
io.facility.waste_stats = { burn_rate_sum, pu_rate, po_rate, po_pl_rate, po_am_rate, spent_rate }
io.facility.ps.publish("burn_sum", burn_rate_sum)
io.facility.ps.publish("sna_count", sna_count_sum)
io.facility.ps.publish("pu_rate", pu_rate)

View File

@ -360,6 +360,12 @@ function pocket.new_session(id, s_addr, i_seq_num, in_queue, out_queue, timeout)
}
end
local process_rate = 0
if fac.sps_data_tbl[1].state then
process_rate = fac.sps_data_tbl[1].state.process_rate
end
-- facility data
data[#db.units + 1] = {
fac.auto_current_waste_product,
@ -368,7 +374,9 @@ function pocket.new_session(id, s_addr, i_seq_num, in_queue, out_queue, timeout)
proc.waste_product,
proc.pu_fallback,
proc.sps_low_power,
fac.sps_data_tbl
fac.waste_stats,
fac.sps_status,
process_rate
}
_send(CRDN_TYPE.API_GET_WASTE, data)

View File

@ -160,6 +160,7 @@ function iocontrol.init_fac(conf)
auto_current_waste_product = types.WASTE_PRODUCT.PLUTONIUM,
auto_pu_fallback_active = false,
auto_sps_disabled = false,
waste_stats = { 0, 0, 0, 0, 0, 0 }, -- waste in, pu, po, po pellets, am, spent waste
radiation = types.new_zero_radiation_reading(),
@ -969,7 +970,17 @@ function iocontrol.record_waste_data(data)
fac.ps.publish("process_pu_fallback", f_data[5])
fac.ps.publish("process_sps_low_power", f_data[6])
fac.sps_data_tbl = f_data[7]
fac.waste_stats = f_data[7]
fac.ps.publish("burn_sum", fac.waste_stats[1])
fac.ps.publish("pu_rate", fac.waste_stats[2])
fac.ps.publish("po_rate", fac.waste_stats[3])
fac.ps.publish("po_pl_rate", fac.waste_stats[4])
fac.ps.publish("po_am_rate", fac.waste_stats[5])
fac.ps.publish("spent_waste_rate", fac.waste_stats[6])
fac.ps.publish("sps_computed_status", f_data[8])
fac.ps.publish("sps_process_rate", f_data[9])
end
-- get the IO controller database

View File

@ -190,12 +190,12 @@ local function new_view(root)
TextBox{parent=c_div,y=12,text="Nuclear Waste In",fg_bg=style.label}
local sum_raw_waste = DataIndicator{parent=c_div,label="",format="%16.3f",value=0,unit="mB/t",lu_colors=lu_col,width=21,fg_bg=text_fg}
-- sum_raw_waste.register(f_ps, "burn_sum", sum_raw_waste.update)
sum_raw_waste.register(f_ps, "burn_sum", sum_raw_waste.update)
TextBox{parent=c_div,y=15,text="Spent Waste Out",fg_bg=style.label}
local sum_sp_waste = DataIndicator{parent=c_div,label="",format="%16.3f",value=0,unit="mB/t",lu_colors=lu_col,width=21,fg_bg=text_fg}
-- sum_sp_waste.register(f_ps, "spent_waste_rate", sum_sp_waste.update)
sum_sp_waste.register(f_ps, "spent_waste_rate", sum_sp_waste.update)
local stats_div = Div{parent=c_pane,x=2,width=page_div.get_width()-2}
table.insert(panes, stats_div)
@ -215,14 +215,14 @@ local function new_view(root)
TextBox{parent=stats_div,y=9,text="Polonium (Pellets)",fg_bg=style.label}
local popl = DataIndicator{parent=stats_div,label="",format="%16.3f",value=0,unit="mB/t",lu_colors=lu_col,width=21,fg_bg=text_fg}
-- pu.register(f_ps, "pu_rate", pu.update)
-- po.register(f_ps, "po_rate", po.update)
-- popl.register(f_ps, "po_pl_rate", popl.update)
pu.register(f_ps, "pu_rate", pu.update)
po.register(f_ps, "po_rate", po.update)
popl.register(f_ps, "po_pl_rate", popl.update)
TextBox{parent=stats_div,y=12,text="Antimatter",fg_bg=style.label}
local am = DataIndicator{parent=stats_div,label="",format="%16d",value=0,unit="\xb5B/t",lu_colors=lu_col,width=21,fg_bg=text_fg}
-- am.register(facility.sps_ps_tbl[1], "process_rate", function (r) sps_rate.update(r * 1000) end)
am.register(f_ps, "sps_process_rate", function (r) am.update(r * 1000) end)
--#endregion
@ -263,17 +263,17 @@ local function new_view(root)
local sps_status = StateIndicator{parent=s_div,x=5,y=3,states=style.sps.states,value=1,min_width=12}
-- status.register(facility.sps_ps_tbl[1], "computed_status", status.update)
sps_status.register(f_ps, "sps_computed_status", sps_status.update)
TextBox{parent=s_div,y=5,text="Input Rate",width=10,fg_bg=style.label}
local sps_in = DataIndicator{parent=s_div,label="",format="%16.2f",value=0,unit="mB/t",lu_colors=lu_col,width=21,fg_bg=text_fg}
-- sps_in.register(facility.ps, "po_am_rate", sps_in.update)
sps_in.register(f_ps, "po_am_rate", sps_in.update)
TextBox{parent=s_div,y=8,text="Production Rate",width=15,fg_bg=style.label}
local sps_rate = DataIndicator{parent=s_div,label="",format="%16d",value=0,unit="\xb5B/t",lu_colors=lu_col,width=21,fg_bg=text_fg}
-- sps_rate.register(facility.sps_ps_tbl[1], "process_rate", function (r) sps_rate.update(r * 1000) end)
sps_rate.register(f_ps, "sps_process_rate", function (r) sps_rate.update(r * 1000) end)
--#endregion