added controll room alarm

This commit is contained in:
2025-06-15 18:36:47 -04:00
parent 1403a45fa2
commit 1a6f7fe882
4 changed files with 71 additions and 2 deletions

BIN
control_alarm.dfpwm Normal file

Binary file not shown.

View File

@@ -5,7 +5,8 @@ turbineVent = peripheral.find("turbineVent")
monitor = peripheral.find("monitor") monitor = peripheral.find("monitor")
internalEnvironment = peripheral.wrap("environmentDetector_0") internalEnvironment = peripheral.wrap("environmentDetector_0")
externalEnvironment = peripheral.wrap("environmentDetector_1") externalEnvironment = peripheral.wrap("environmentDetector_1")
modem = peripheral.wrap("right") modem = peripheral.find("modem")
controlRoomSpeakers = peripheral.find("speaker")
tempDriver = kernel.addDriver("temperature_driver") tempDriver = kernel.addDriver("temperature_driver")
coolantDriver = kernel.addDriver("coolant_driver") coolantDriver = kernel.addDriver("coolant_driver")
@@ -13,6 +14,7 @@ statusDriver = kernel.addDriver("status_driver")
turbineDriver = kernel.addDriver("turbine_driver") turbineDriver = kernel.addDriver("turbine_driver")
burnRateDriver = kernel.addDriver("burnrate_driver") burnRateDriver = kernel.addDriver("burnrate_driver")
environmentDriver = kernel.addDriver("environment_driver") environmentDriver = kernel.addDriver("environment_driver")
speakerDriver = kernel.addDriver("speaker_driver")
isErrorState = false isErrorState = false
reactorStatus = false reactorStatus = false

View File

@@ -1,7 +1,8 @@
kernel = require("kernel") kernel = require("kernel")
--local reactor = peripheral.find("fissionReactorLogicAdapter") speakerDriver = kernel.addDriver("speaker_driver")
local modem = peripheral.find("modem") local modem = peripheral.find("modem")
local monitor = peripheral.wrap("top") local monitor = peripheral.wrap("top")
controlRoomSpeakers = peripheral.find("speaker")
function setNewLine() function setNewLine()
local x,y = monitor.getCursorPos() local x,y = monitor.getCursorPos()
@@ -9,9 +10,15 @@ function setNewLine()
monitor.clearLine() monitor.clearLine()
end end
local function startup()
speakerDriver.startup()
speakerDriver.playControlRoomAlarm(controlRoomSpeakers)
end
local function run() local function run()
monitor.setTextScale(0.5) monitor.setTextScale(0.5)
monitor.setCursorPos(1,0) monitor.setCursorPos(1,0)
startup()
while true do while true do
setNewLine() setNewLine()
monitor.write("Checking for reactor status...") monitor.write("Checking for reactor status...")

60
speaker_driver.lua Normal file
View File

@@ -0,0 +1,60 @@
local dfpwm = require("cc.audio.dfpwm")
local encoder = dfpwm.make_encoder()
local decoder = dfpwm.make_decoder()
local function getFileName(name)
local extension = ".dfpwm"
local fullFile = name .. extension
return fullFile
end
local function playSound(speaker, fileName)
for input in io.lines(getFileName(fileName), 16 * 1024) do
local decoded = decoder(input)
while not speaker.playAudio(decoded) do
os.pullEvent("speaker_audio_empty")
end
end
end
function playControlRoomAlarm(speakers)
for _, speaker in ipairs(speakers) do
playSound(speaker,"control_alarm")
end
end
function addSoundFile(fileName)
local baseRoute = "https://git.astrocore.space/root/NovaCorpLLC/raw/branch/main/"
local name = getFileName(fileName)
local fullPath = baseRoute .. name
shell.execute("rm", name)
shell.execute("wget", fullPath)
end
local function watch()
end
local function startUp()
local sounds = {
{ fileName = "control_alarm" }
}
for i, item in ipairs(sounds) do
addSoundFile(item.fileName)
end
end
local function shutdown()
end
local function report()
end
return { report = report, watch = watch, startUp = startUp, shutdown = shutdown }