diff --git a/control_alarm.dfpwm b/control_alarm.dfpwm new file mode 100644 index 0000000..ab0f813 Binary files /dev/null and b/control_alarm.dfpwm differ diff --git a/main.lua b/main.lua index de713c9..9e00bb6 100644 --- a/main.lua +++ b/main.lua @@ -5,7 +5,8 @@ turbineVent = peripheral.find("turbineVent") monitor = peripheral.find("monitor") internalEnvironment = peripheral.wrap("environmentDetector_0") externalEnvironment = peripheral.wrap("environmentDetector_1") -modem = peripheral.wrap("right") +modem = peripheral.find("modem") +controlRoomSpeakers = peripheral.find("speaker") tempDriver = kernel.addDriver("temperature_driver") coolantDriver = kernel.addDriver("coolant_driver") @@ -13,6 +14,7 @@ statusDriver = kernel.addDriver("status_driver") turbineDriver = kernel.addDriver("turbine_driver") burnRateDriver = kernel.addDriver("burnrate_driver") environmentDriver = kernel.addDriver("environment_driver") +speakerDriver = kernel.addDriver("speaker_driver") isErrorState = false reactorStatus = false diff --git a/pairity_main.lua b/pairity_main.lua index ae3936e..7dcf69a 100644 --- a/pairity_main.lua +++ b/pairity_main.lua @@ -1,7 +1,8 @@ kernel = require("kernel") ---local reactor = peripheral.find("fissionReactorLogicAdapter") +speakerDriver = kernel.addDriver("speaker_driver") local modem = peripheral.find("modem") local monitor = peripheral.wrap("top") +controlRoomSpeakers = peripheral.find("speaker") function setNewLine() local x,y = monitor.getCursorPos() @@ -9,9 +10,15 @@ function setNewLine() monitor.clearLine() end +local function startup() + speakerDriver.startup() + speakerDriver.playControlRoomAlarm(controlRoomSpeakers) +end + local function run() monitor.setTextScale(0.5) monitor.setCursorPos(1,0) + startup() while true do setNewLine() monitor.write("Checking for reactor status...") diff --git a/speaker_driver.lua b/speaker_driver.lua new file mode 100644 index 0000000..704ce07 --- /dev/null +++ b/speaker_driver.lua @@ -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 } \ No newline at end of file