#593 radiation monitor data comms
This commit is contained in:
@@ -98,7 +98,8 @@ function iocontrol.init_core(pkt_comms, nav, cfg)
|
||||
get_unit = function (unit) comms.api__get_unit(unit) end,
|
||||
get_ctrl = function () comms.api__get_control() end,
|
||||
get_proc = function () comms.api__get_process() end,
|
||||
get_waste = function () comms.api__get_waste() end
|
||||
get_waste = function () comms.api__get_waste() end,
|
||||
get_rad = function () comms.api__get_rad() end
|
||||
}
|
||||
end
|
||||
|
||||
@@ -184,7 +185,9 @@ function iocontrol.init_fac(conf)
|
||||
sps_data_tbl = {}, ---@type sps_session_db[]
|
||||
|
||||
tank_ps_tbl = {}, ---@type psil[]
|
||||
tank_data_tbl = {} ---@type dynamicv_session_db[]
|
||||
tank_data_tbl = {}, ---@type dynamicv_session_db[]
|
||||
|
||||
rad_monitors = {} ---@type { radiation: radiation_reading, raw: number }[]
|
||||
}
|
||||
|
||||
-- create induction and SPS tables (currently only 1 of each is supported)
|
||||
@@ -264,7 +267,9 @@ function iocontrol.init_fac(conf)
|
||||
turbine_data_tbl = {}, ---@type turbinev_session_db[]
|
||||
|
||||
tank_ps_tbl = {}, ---@type psil[]
|
||||
tank_data_tbl = {} ---@type dynamicv_session_db[]
|
||||
tank_data_tbl = {}, ---@type dynamicv_session_db[]
|
||||
|
||||
rad_monitors = {} ---@type { radiation: radiation_reading, raw: number }[]
|
||||
}
|
||||
|
||||
-- on other facility modes, overwrite unit TANK option with facility tank defs
|
||||
|
||||
@@ -658,7 +658,6 @@ function iorx.record_waste_data(data)
|
||||
fac.ps.publish("sps_process_rate", f_data[9])
|
||||
end
|
||||
|
||||
|
||||
-- update facility app with facility and unit data from API_GET_FAC_DTL
|
||||
---@param data table
|
||||
function iorx.record_fac_detail_data(data)
|
||||
@@ -819,6 +818,42 @@ function iorx.record_fac_detail_data(data)
|
||||
s_ps.publish("SPSStateStatus", s_stat)
|
||||
end
|
||||
|
||||
-- update the radiation monitor app with radiation monitor data from API_GET_RAD
|
||||
---@param data table
|
||||
function iorx.record_radiation_data(data)
|
||||
-- unit radiation monitors
|
||||
|
||||
for u_id = 1, #io.units do
|
||||
local unit = io.units[u_id]
|
||||
|
||||
unit.radiation = types.new_zero_radiation_reading()
|
||||
unit.rad_monitors = data[u_id]
|
||||
|
||||
local max_rad = 0
|
||||
for _, mon in pairs(unit.rad_monitors) do
|
||||
if mon.raw > max_rad then
|
||||
max_rad = mon.raw
|
||||
unit.radiation = mon.radiation
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- facility radiation monitors
|
||||
|
||||
local fac = io.facility
|
||||
|
||||
fac.radiation = types.new_zero_radiation_reading()
|
||||
fac.rad_monitors = data[#io.units + 1]
|
||||
|
||||
local max_rad = 0
|
||||
for _, mon in pairs(fac.rad_monitors) do
|
||||
if mon.raw > max_rad then
|
||||
max_rad = mon.raw
|
||||
fac.radiation = mon.radiation
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return function (io_obj)
|
||||
io = io_obj
|
||||
return iorx
|
||||
|
||||
@@ -583,6 +583,11 @@ function pocket.comms(version, nic, sv_watchdog, api_watchdog, nav)
|
||||
if self.api.linked then _send_api(CRDN_TYPE.API_GET_WASTE, {}) end
|
||||
end
|
||||
|
||||
-- coordinator get radiation app data
|
||||
function public.api__get_rad()
|
||||
if self.api.linked then _send_api(CRDN_TYPE.API_GET_RAD, {}) end
|
||||
end
|
||||
|
||||
-- send a facility command
|
||||
---@param cmd FAC_COMMAND command
|
||||
---@param option any? optional option options for the optional options (like waste mode)
|
||||
@@ -759,6 +764,10 @@ function pocket.comms(version, nic, sv_watchdog, api_watchdog, nav)
|
||||
if _check_length(packet, #iocontrol.get_db().units + 1) then
|
||||
iocontrol.rx.record_waste_data(packet.data)
|
||||
end
|
||||
elseif packet.type == CRDN_TYPE.API_GET_RAD then
|
||||
if _check_length(packet, #iocontrol.get_db().units + 1) then
|
||||
iocontrol.rx.record_radiation_data(packet.data)
|
||||
end
|
||||
else _fail_type(packet) end
|
||||
else
|
||||
log.debug("discarding coordinator SCADA_CRDN packet before linked")
|
||||
|
||||
@@ -86,7 +86,7 @@ local function new_view(root)
|
||||
-- refresh data callback, every 500ms it will re-send the query
|
||||
local function update()
|
||||
if util.time_ms() - last_update >= 500 then
|
||||
-- db.api.get_rad()
|
||||
db.api.get_rad()
|
||||
last_update = util.time_ms()
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user