#86 improvements to supervisor units, code cleanup
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
local log = require("scada-common.log")
|
||||
local mqueue = require("scada-common.mqueue")
|
||||
local util = require("scada-common.util")
|
||||
local log = require("scada-common.log")
|
||||
local mqueue = require("scada-common.mqueue")
|
||||
local util = require("scada-common.util")
|
||||
|
||||
local unit = require("supervisor.session.unit")
|
||||
|
||||
local coordinator = require("supervisor.session.coordinator")
|
||||
local plc = require("supervisor.session.plc")
|
||||
@@ -21,6 +23,7 @@ svsessions.SESSION_TYPE = SESSION_TYPE
|
||||
local self = {
|
||||
modem = nil,
|
||||
num_reactors = 0,
|
||||
facility_units = {},
|
||||
rtu_sessions = {},
|
||||
plc_sessions = {},
|
||||
coord_sessions = {},
|
||||
@@ -119,9 +122,23 @@ end
|
||||
|
||||
-- PUBLIC FUNCTIONS --
|
||||
|
||||
-- link the modem
|
||||
-- initialize svsessions
|
||||
---@param modem table
|
||||
function svsessions.link_modem(modem)
|
||||
---@param num_reactors integer
|
||||
---@param cooling_conf table
|
||||
function svsessions.init(modem, num_reactors, cooling_conf)
|
||||
self.modem = modem
|
||||
self.num_reactors = num_reactors
|
||||
self.facility_units = {}
|
||||
|
||||
for i = 1, self.num_reactors do
|
||||
table.insert(self.facility_units, unit.new(i, cooling_conf[i].BOILERS, cooling_conf[i].TURBINES))
|
||||
end
|
||||
end
|
||||
|
||||
-- re-link the modem
|
||||
---@param modem table
|
||||
function svsessions.relink_modem(modem)
|
||||
self.modem = modem
|
||||
end
|
||||
|
||||
@@ -200,6 +217,8 @@ function svsessions.establish_plc_session(local_port, remote_port, for_reactor,
|
||||
plc_s.instance = plc.new_session(self.next_plc_id, for_reactor, plc_s.in_queue, plc_s.out_queue)
|
||||
table.insert(self.plc_sessions, plc_s)
|
||||
|
||||
self.facility_units[for_reactor].link_plc_session(plc_s)
|
||||
|
||||
log.debug("established new PLC session to " .. remote_port .. " with ID " .. self.next_plc_id)
|
||||
|
||||
self.next_plc_id = self.next_plc_id + 1
|
||||
@@ -232,7 +251,7 @@ function svsessions.establish_rtu_session(local_port, remote_port, advertisement
|
||||
instance = nil
|
||||
}
|
||||
|
||||
rtu_s.instance = rtu.new_session(self.next_rtu_id, rtu_s.in_queue, rtu_s.out_queue, advertisement)
|
||||
rtu_s.instance = rtu.new_session(self.next_rtu_id, rtu_s.in_queue, rtu_s.out_queue, advertisement, self.facility_units)
|
||||
table.insert(self.rtu_sessions, rtu_s)
|
||||
|
||||
log.debug("established new RTU session to " .. remote_port .. " with ID " .. self.next_rtu_id)
|
||||
@@ -260,7 +279,7 @@ function svsessions.establish_coord_session(local_port, remote_port, version)
|
||||
instance = nil
|
||||
}
|
||||
|
||||
coord_s.instance = coordinator.new_session(self.next_coord_id, coord_s.in_queue, coord_s.out_queue)
|
||||
coord_s.instance = coordinator.new_session(self.next_coord_id, coord_s.in_queue, coord_s.out_queue, self.facility_units)
|
||||
table.insert(self.coord_sessions, coord_s)
|
||||
|
||||
log.debug("established new coordinator session to " .. remote_port .. " with ID " .. self.next_coord_id)
|
||||
@@ -294,6 +313,12 @@ function svsessions.iterate_all()
|
||||
|
||||
-- iterate coordinator sessions
|
||||
_iterate(self.coord_sessions)
|
||||
|
||||
-- iterate units
|
||||
for i = 1, #self.facility_units do
|
||||
local u = self.facility_units[i] ---@type reactor_unit
|
||||
u.update()
|
||||
end
|
||||
end
|
||||
|
||||
-- delete all closed sessions
|
||||
|
||||
Reference in New Issue
Block a user