opus/sys/services/device.lua

48 lines
1.1 KiB
Lua
Raw Normal View History

2017-10-08 21:45:01 +00:00
_G.requireInjector()
local Event = require('event')
2016-12-11 19:24:52 +00:00
local Peripheral = require('peripheral')
local Util = require('util')
2016-12-11 19:24:52 +00:00
2017-10-08 21:45:01 +00:00
local colors = _G.colors
local device = _G.device
local multishell = _ENV.multishell
local os = _G.os
local term = _G.term
2016-12-11 19:24:52 +00:00
multishell.setTitle(multishell.getCurrent(), 'Devices')
local attachColor = colors.green
local detachColor = colors.red
if not term.isColor() then
attachColor = colors.white
detachColor = colors.lightGray
end
2017-10-08 21:45:01 +00:00
Event.on('peripheral', function(_, side)
2016-12-11 19:24:52 +00:00
if side then
2017-04-01 23:21:49 +00:00
local dev = Peripheral.addDevice(device, side)
2016-12-11 19:24:52 +00:00
if dev then
term.setTextColor(attachColor)
Util.print('[%s] %s attached', dev.side, dev.name)
os.queueEvent('device_attach', dev.name)
end
end
end)
2017-10-08 21:45:01 +00:00
Event.on('peripheral_detach', function(_, side)
2016-12-11 19:24:52 +00:00
if side then
local dev = Util.find(device, 'side', side)
if dev then
term.setTextColor(detachColor)
Util.print('[%s] %s detached', dev.side, dev.name)
os.queueEvent('device_detach', dev.name)
device[dev.name] = nil
end
end
end)
print('waiting for peripheral changes')
Event.pullEvents()