kernel = require("kernel") reactor = peripheral.find("fissionReactorLogicAdapter") turbine = peripheral.find("turbineValve") turbineVent = peripheral.find("turbineVent") monitor = peripheral.find("monitor") tempDriver = kernel.addDriver("temperature_driver") coolantDriver = kernel.addDriver("coolant_driver") statusDriver = kernel.addDriver("status_driver") turbineDriver = kernel.addDriver("turbine_driver") burnRateDriver = kernel.addDriver("burnrate_driver") local function runMonitors() parallel.waitForAll(tempDriver.watch, coolantDriver.watch, statusDriver.watch, turbineDriver.watch, burnRateDriver.watch) -- while true do -- tempDriver.watch() -- coolantDriver.watch() -- statusDriver.watch() -- turbineDriver.watch() -- burnRateDriver.watch() -- sleep(0.05) -- end end local function runDisplay() monitor.clear() monitor.setTextScale(1) while true do monitor.setCursorPos(1, 1) local drivers = { { Label = "Status", driver = statusDriver}, { Label = "Temperature", driver = tempDriver }, { Label = "Coolant", driver = coolantDriver }, { Label = "Turbine", driver = turbineDriver }, { Label = "Burn Rate", driver = burnRateDriver } } for i, item in ipairs(drivers) do monitor.setCursorPos(1, i) item.driver.report() monitor.setCursorPos(1, i + 1) end sleep(0.05) -- Update every tenth second end end local function run() while not reactor do print("Waiting for reactor signal...") sleep(1) end while not turbine do print("Waiting for turbine signal...") sleep(1) end while not monitor do print("Waiting for monitor signal...") sleep(1) end -- Wait for all driver objects to be available while not (tempDriver and coolantDriver and statusDriver and turbineDriver and burnRateDriver) do print("Waiting for all drivers to be initialized...") sleep(1) end reactor.activate() parallel.waitForAll(runMonitors, runDisplay) end return { run = run}