#604 reworked supervisor redstone RTU interface

This commit is contained in:
Mikayla
2025-04-29 02:38:42 +00:00
parent be462db50b
commit e6f5ab8ef4
7 changed files with 176 additions and 134 deletions

View File

@@ -9,7 +9,8 @@ local rsctl = {}
-- create a new redstone RTU I/O controller
---@nodiscard
---@param redstone_rtus redstone_session[] redstone RTU sessions
function rsctl.new(redstone_rtus)
---@param bank integer I/O bank (unit/facility assignment) to interface with
function rsctl.new(redstone_rtus, bank)
---@class rs_controller
local public = {}
@@ -18,7 +19,7 @@ function rsctl.new(redstone_rtus)
---@return boolean
function public.is_connected(port)
for i = 1, #redstone_rtus do
if redstone_rtus[i].get_db().io[port] ~= nil then return true end
if redstone_rtus[i].get_db().io[bank][port] ~= nil then return true end
end
return false
@@ -29,7 +30,7 @@ function rsctl.new(redstone_rtus)
---@param value boolean
function public.digital_write(port, value)
for i = 1, #redstone_rtus do
local io = redstone_rtus[i].get_db().io[port]
local io = redstone_rtus[i].get_db().io[bank][port]
if io ~= nil then io.write(value) end
end
end
@@ -40,7 +41,7 @@ function rsctl.new(redstone_rtus)
---@return boolean|nil
function public.digital_read(port)
for i = 1, #redstone_rtus do
local io = redstone_rtus[i].get_db().io[port]
local io = redstone_rtus[i].get_db().io[bank][port]
if io ~= nil then return io.read() --[[@as boolean|nil]] end
end
end
@@ -52,7 +53,7 @@ function rsctl.new(redstone_rtus)
---@param max number maximum value for scaling 0 to 15
function public.analog_write(port, value, min, max)
for i = 1, #redstone_rtus do
local io = redstone_rtus[i].get_db().io[port]
local io = redstone_rtus[i].get_db().io[bank][port]
if io ~= nil then io.write(rsio.analog_write(value, min, max)) end
end
end