modules as devices
This commit is contained in:
47
sys/extensions/3.modules.lua
Normal file
47
sys/extensions/3.modules.lua
Normal file
@@ -0,0 +1,47 @@
|
||||
local Util = require('util')
|
||||
|
||||
local device = _G.device
|
||||
local kernel = _G.kernel
|
||||
local os = _G.os
|
||||
local peripheral = _G.peripheral
|
||||
|
||||
local containers = {
|
||||
manipulator = true,
|
||||
neuralInterface = true,
|
||||
}
|
||||
|
||||
local function getModules(dev, side)
|
||||
local list = { }
|
||||
|
||||
if dev then
|
||||
for _, module in pairs(dev.listModules()) do
|
||||
list[module] = Util.shallowCopy(dev)
|
||||
list[module].name = module
|
||||
list[module].type = module
|
||||
list[module].side = side
|
||||
end
|
||||
end
|
||||
return list
|
||||
end
|
||||
|
||||
for _,v in pairs(device) do
|
||||
if containers[v.type] then
|
||||
local list = getModules(v, v.side)
|
||||
for k, dev in pairs(list) do
|
||||
device[k] = dev
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- register modules as peripherals
|
||||
kernel.hook('device_attach', function(_, eventData)
|
||||
local dev = eventData[2]
|
||||
|
||||
if dev and containers[dev.type] then
|
||||
local list = getModules(peripheral.wrap(dev.side), dev.side)
|
||||
for k,v in pairs(list) do
|
||||
device[k] = v
|
||||
os.queueEvent('device_attach', k, v)
|
||||
end
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user