Merge branch 'devel' into color-update

This commit is contained in:
Mikayla Fischler
2024-03-09 18:51:21 -05:00
11 changed files with 49 additions and 67 deletions

View File

@@ -77,9 +77,11 @@ function rtu.load_config()
return cfv.valid()
end
-- create a new RTU unit
-- create a new RTU unit<br>
-- if this is for a PPM peripheral, auto fault clearing MUST stay enabled once access begins
---@nodiscard
function rtu.init_unit()
---@param device table|nil peripheral device, if applicable
function rtu.init_unit(device)
local self = {
discrete_inputs = {},
coils = {},
@@ -96,6 +98,10 @@ function rtu.init_unit()
---@class rtu
local protected = {}
-- function to check if the peripheral (if exists) is faulted
local function _is_faulted() return false end
if device then _is_faulted = device.__p_is_faulted end
-- refresh IO count
local function _count_io()
self.io_count_cache = { #self.discrete_inputs, #self.coils, #self.input_regs, #self.holding_regs }
@@ -122,9 +128,8 @@ function rtu.init_unit()
---@param di_addr integer
---@return any value, boolean access_fault
function public.read_di(di_addr)
ppm.clear_fault()
local value = self.discrete_inputs[di_addr].read()
return value, ppm.is_faulted()
return value, _is_faulted()
end
-- coils: single bit read-write
@@ -143,9 +148,8 @@ function rtu.init_unit()
---@param coil_addr integer
---@return any value, boolean access_fault
function public.read_coil(coil_addr)
ppm.clear_fault()
local value = self.coils[coil_addr].read()
return value, ppm.is_faulted()
return value, _is_faulted()
end
-- write coil
@@ -153,9 +157,8 @@ function rtu.init_unit()
---@param value any
---@return boolean access_fault
function public.write_coil(coil_addr, value)
ppm.clear_fault()
self.coils[coil_addr].write(value)
return ppm.is_faulted()
return _is_faulted()
end
-- input registers: multi-bit read-only
@@ -173,9 +176,8 @@ function rtu.init_unit()
---@param reg_addr integer
---@return any value, boolean access_fault
function public.read_input_reg(reg_addr)
ppm.clear_fault()
local value = self.input_regs[reg_addr].read()
return value, ppm.is_faulted()
return value, _is_faulted()
end
-- holding registers: multi-bit read-write
@@ -194,9 +196,8 @@ function rtu.init_unit()
---@param reg_addr integer
---@return any value, boolean access_fault
function public.read_holding_reg(reg_addr)
ppm.clear_fault()
local value = self.holding_regs[reg_addr].read()
return value, ppm.is_faulted()
return value, _is_faulted()
end
-- write holding register
@@ -204,9 +205,8 @@ function rtu.init_unit()
---@param value any
---@return boolean access_fault
function public.write_holding_reg(reg_addr, value)
ppm.clear_fault()
self.holding_regs[reg_addr].write(value)
return ppm.is_faulted()
return _is_faulted()
end
-- public RTU device access