This commit is contained in:
Laurie Fisher 2025-06-27 14:17:07 +01:00
parent 11ecdb960f
commit 353d13fee8
Signed by: PinkEyedOrphan
GPG Key ID: 7F827B68147AEE76
4 changed files with 73 additions and 43 deletions

25
behavior.lua Normal file
View File

@ -0,0 +1,25 @@
local M = {}
local currentStatus = "idle"
function M.getStatus()
return currentStatus
end
function M.run()
while true do
currentStatus = "moving backward"
for i = 1, 10 do
turtle.back()
sleep(0.5)
end
currentStatus = "moving forward"
for i = 1, 10 do
turtle.forward()
sleep(0.5)
end
end
end
return M

View File

@ -0,0 +1,8 @@
local behavior = require("behavior")
local status = require("status")
-- Run behavior and status reporting in parallel
parallel.waitForAny(
behavior.run,
function() status.reportStatus(behavior.getStatus) end
)

40
status.lua Normal file
View File

@ -0,0 +1,40 @@
local M = {}
local modemOpened = false
for _, side in ipairs({"top", "bottom", "left", "right", "front", "back"}) do
if peripheral.getType(side) == "modem" then
rednet.open(side)
modemOpened = true
break
end
end
if not modemOpened then
print("No modem found!")
end
local id = os.getComputerID()
local label = os.getComputerLabel() or ("Turtle_" .. id)
function M.reportStatus(getStatusFn)
while true do
local status = getStatusFn()
local msg = {
id = id,
label = label,
status = status,
time = os.time()
}
rednet.broadcast(textutils.serialize(msg), "turtle_status")
-- Optional: print for debug
term.setCursorPos(1, 5)
term.clearLine()
print("Broadcasted: " .. status .. " @ " .. textutils.formatTime(os.time(), true))
sleep(2)
end
end
return M

View File

@ -1,43 +0,0 @@
local id = os.getComputerID()
local label = os.getComputerLabel() or ("Turtle_" .. id)
local status = "idle" -- Can be changed based on the turtle's job
-- Try to open modem
local modemOpened = false
for _, side in ipairs({"top", "bottom", "left", "right", "front", "back"}) do
if peripheral.getType(side) == "modem" then
rednet.open(side)
modemOpened = true
break
end
end
if not modemOpened then
print("No modem found. Aborting.")
return
end
-- Display header
term.clear()
term.setCursorPos(1, 1)
print("Status Broadcaster")
print("------------------")
while true do
local msg = {
id = id,
label = label,
status = status,
time = os.time()
}
local serialized = textutils.serialize(msg)
rednet.broadcast(serialized, "turtle_status")
-- Print to screen
term.setCursorPos(1, 5)
term.clearLine()
print("Sent at: " .. os.date("%H:%M:%S"))
sleep(5)
end