RSIO - MikaylaFischler/cc-mek-scada GitHub Wiki
Redstone I/O
This component of the common code wraps basic redstone digital and analog input and output. All the currently supported "channels" are listed below. This, and all the other redstone I/O code, can be found in /scada-common/rsio.lua
.
---@enum IO_PORT redstone I/O logic port
local IO_PORT = {
-- digital inputs --
-- facility
F_SCRAM = 1, -- active low, facility-wide scram
F_ACK = 2, -- active high, facility alarm acknowledge
-- reactor
R_SCRAM = 3, -- active low, reactor scram
R_RESET = 4, -- active high, reactor RPS reset
R_ENABLE = 5, -- active high, reactor enable
-- unit
U_ACK = 6, -- active high, unit alarm acknowledge
-- digital outputs --
-- facility
F_ALARM = 7, -- active high, facility-wide alarm (any high priority unit alarm)
F_ALARM_ANY = 8, -- active high, any alarm regardless of priority
-- waste
WASTE_PU = 9, -- active low, waste -> plutonium -> pellets route
WASTE_PO = 10, -- active low, waste -> polonium route
WASTE_POPL = 11, -- active low, polonium -> pellets route
WASTE_AM = 12, -- active low, polonium -> anti-matter route
-- reactor
R_ACTIVE = 13, -- active high, reactor is active
R_AUTO_CTRL = 14, -- active high, reactor burn rate is automatic
R_SCRAMMED = 15, -- active high, reactor is scrammed
R_AUTO_SCRAM = 16, -- active high, reactor was automatically scrammed
R_HIGH_DMG = 17, -- active high, reactor damage is high
R_HIGH_TEMP = 18, -- active high, reactor is at a high temperature
R_LOW_COOLANT = 19, -- active high, reactor has very low coolant
R_EXCESS_HC = 20, -- active high, reactor has excess heated coolant
R_EXCESS_WS = 21, -- active high, reactor has excess waste
R_INSUFF_FUEL = 22, -- active high, reactor has insufficent fuel
R_PLC_FAULT = 23, -- active high, reactor PLC reports a device access fault
R_PLC_TIMEOUT = 24, -- active high, reactor PLC has not been heard from
-- unit outputs
U_ALARM = 25, -- active high, unit alarm
U_EMER_COOL = 26 -- active low, emergency coolant control
}
The advantage this component provides is abstracting away the logic levels. For example, checking if an E-Stop is pressed (redstone signal is not present) can be done by checking if the port "is active", rather than having to know that for that particular input, logic LOW is pressed and logic HIGH is unpressed. For an output example, closing a valve is a an active low operation, since applying a redstone valve opens/disconnects a Mekanism redstone-sensitive tube/pipe.
This component also provides scaling functions for analog inputs and outputs, but this project currently doesn't use any analog I/O.