diff --git a/coordinator/iocontrol.lua b/coordinator/iocontrol.lua index 5670219..aa436a6 100644 --- a/coordinator/iocontrol.lua +++ b/coordinator/iocontrol.lua @@ -840,15 +840,27 @@ function iocontrol.update_unit_statuses(statuses) log.debug(log_header .. "reactor general status length mismatch") end - unit.reactor_data.rps_status = rps_status - unit.reactor_data.mek_status = mek_status - - -- if status hasn't been received, mek_status = {} - if type(unit.reactor_data.mek_status.act_burn_rate) == "number" then - burn_rate = unit.reactor_data.mek_status.act_burn_rate - burn_rate_sum = burn_rate_sum + burn_rate + for key, val in pairs(unit.reactor_data) do + if key ~= "rps_status" and key ~= "mek_struct" and key ~= "mek_status" then + unit.unit_ps.publish(key, val) + end end + unit.reactor_data.rps_status = rps_status + for key, val in pairs(rps_status) do + unit.unit_ps.publish(key, val) + end + + if next(mek_status) then + unit.reactor_data.mek_status = mek_status + for key, val in pairs(mek_status) do + unit.unit_ps.publish(key, val) + end + end + + burn_rate = unit.reactor_data.mek_status.act_burn_rate + burn_rate_sum = burn_rate_sum + burn_rate + if unit.reactor_data.mek_status.status then unit.unit_ps.publish("computed_status", 5) -- running else @@ -865,24 +877,6 @@ function iocontrol.update_unit_statuses(statuses) end end - for key, val in pairs(unit.reactor_data) do - if key ~= "rps_status" and key ~= "mek_struct" and key ~= "mek_status" then - unit.unit_ps.publish(key, val) - end - end - - if type(unit.reactor_data.rps_status) == "table" then - for key, val in pairs(unit.reactor_data.rps_status) do - unit.unit_ps.publish(key, val) - end - end - - if type(unit.reactor_data.mek_status) == "table" then - for key, val in pairs(unit.reactor_data.mek_status) do - unit.unit_ps.publish(key, val) - end - end - unit.connected = true else log.debug(log_header .. "reactor status length mismatch") diff --git a/coordinator/ui/components/unit_detail.lua b/coordinator/ui/components/unit_detail.lua index 709b684..8c9ce7a 100644 --- a/coordinator/ui/components/unit_detail.lua +++ b/coordinator/ui/components/unit_detail.lua @@ -381,12 +381,10 @@ local function init(parent, id) db.process.unit_ack[id].on_ack_alarms = ack_a.on_response local function start_button_en_check() - if (unit.reactor_data ~= nil) and (unit.reactor_data.mek_status ~= nil) then - local can_start = (not unit.reactor_data.mek_status.status) and - (not unit.reactor_data.rps_tripped) and - (unit.a_group == AUTO_GROUP.MANUAL) - if can_start then start.enable() else start.disable() end - end + local can_start = (not unit.reactor_data.mek_status.status) and + (not unit.reactor_data.rps_tripped) and + (unit.a_group == AUTO_GROUP.MANUAL) + if can_start then start.enable() else start.disable() end end start.register(u_ps, "status", start_button_en_check) diff --git a/pocket/iocontrol.lua b/pocket/iocontrol.lua index d1bf95e..36b5fd6 100644 --- a/pocket/iocontrol.lua +++ b/pocket/iocontrol.lua @@ -522,22 +522,16 @@ function iocontrol.record_unit_data(data) end end - if type(unit.reactor_data.rps_status) == "table" then - for key, val in pairs(unit.reactor_data.rps_status) do - unit.unit_ps.publish(key, val) - end + for key, val in pairs(unit.reactor_data.rps_status) do + unit.unit_ps.publish(key, val) end - if type(unit.reactor_data.mek_struct) == "table" then - for key, val in pairs(unit.reactor_data.mek_struct) do - unit.unit_ps.publish(key, val) - end + for key, val in pairs(unit.reactor_data.mek_struct) do + unit.unit_ps.publish(key, val) end - if type(unit.reactor_data.mek_status) == "table" then - for key, val in pairs(unit.reactor_data.mek_status) do - unit.unit_ps.publish(key, val) - end + for key, val in pairs(unit.reactor_data.mek_status) do + unit.unit_ps.publish(key, val) end end @@ -633,21 +627,6 @@ function iocontrol.record_unit_data(data) local function white(text) return { text = text, color = colors.white } end local function blue(text) return { text = text, color = colors.blue } end - -- unit.reactor_data.rps_status = { - -- high_dmg = false, - -- high_temp = false, - -- low_cool = false, - -- ex_waste = false, - -- ex_hcool = false, - -- no_fuel = false, - -- fault = false, - -- timeout = false, - -- manual = false, - -- automatic = false, - -- sys_fail = false, - -- force_dis = false - -- } - -- if unit.reactor_data.rps_status then -- for k, v in pairs(unit.alarms) do -- unit.alarms[k] = ALARM_STATE.TRIPPED diff --git a/pocket/ui/apps/control.lua b/pocket/ui/apps/control.lua index 59b1ffd..a74866b 100644 --- a/pocket/ui/apps/control.lua +++ b/pocket/ui/apps/control.lua @@ -167,12 +167,10 @@ local function new_view(root) unit.reset_rps_ack = reset.on_response local function start_button_en_check() - if (unit.reactor_data ~= nil) and (unit.reactor_data.mek_status ~= nil) then - local can_start = (not unit.reactor_data.mek_status.status) and - (not unit.reactor_data.rps_tripped) and - (unit.a_group == AUTO_GROUP.MANUAL) - if can_start then start.enable() else start.disable() end - end + local can_start = (not unit.reactor_data.mek_status.status) and + (not unit.reactor_data.rps_tripped) and + (unit.a_group == AUTO_GROUP.MANUAL) + if can_start then start.enable() else start.disable() end end start.register(u_ps, "status", start_button_en_check)