#32 new threaded PLC code

This commit is contained in:
Mikayla Fischler
2022-04-27 12:21:10 -04:00
parent f7f723829c
commit 68011d6734
7 changed files with 210 additions and 132 deletions

View File

@@ -1,48 +0,0 @@
--
-- Message Queue
--
TYPE = {
COMMAND = 0,
PACKET = 1
}
function new()
local queue = {}
local length = function ()
return #queue
end
local empty = function ()
return #queue == 0
end
local _push = function (qtype, message)
table.insert(queue, { qtype = qtype, message = message })
end
local push_packet = function (message)
_push(TYPE.PACKET, message)
end
local push_command = function (message)
_push(TYPE.COMMAND, message)
end
local pop = function ()
if #queue > 0 then
return table.remove(queue)
else
return nil
end
end
return {
length = length,
empty = empty,
push_packet = push_packet,
push_command = push_command,
pop = pop
}
end

View File

@@ -330,7 +330,7 @@ function new_session(id, for_reactor, in_queue, out_queue)
-- handle queue --
------------------
if not self.in_q.empty() then
if self.in_q.ready() then
-- get a new message to process
local message = self.in_q.pop()

View File

@@ -130,7 +130,7 @@ local function _iterate(sessions)
if ok then
-- send packets in out queue
-- @todo handle commands if that's being used too
while not session.out_queue.empty() do
while session.out_queue.ready() do
local msg = session.out_queue.pop()
if msg.qtype == mqueue.TYPE.PACKET then
self.modem.transmit(session.r_port, session.l_port, msg.message.raw_sendable())

View File

@@ -7,9 +7,9 @@ os.loadAPI("scada-common/util.lua")
os.loadAPI("scada-common/ppm.lua")
os.loadAPI("scada-common/comms.lua")
os.loadAPI("scada-common/modbus.lua")
os.loadAPI("scada-common/mqueue.lua")
os.loadAPI("config.lua")
os.loadAPI("mqueue.lua")
os.loadAPI("session/rtu.lua")
os.loadAPI("session/plc.lua")
@@ -18,7 +18,7 @@ os.loadAPI("session/svsessions.lua")
os.loadAPI("supervisor.lua")
local SUPERVISOR_VERSION = "alpha-v0.1.5"
local SUPERVISOR_VERSION = "alpha-v0.1.6"
local print = util.print
local println = util.println