2017-09-05 06:09:31 +00:00
|
|
|
requireInjector(getfenv(1))
|
|
|
|
|
2016-12-11 19:24:52 +00:00
|
|
|
local Util = require('util')
|
|
|
|
|
|
|
|
multishell.setTitle(multishell.getCurrent(), 'Net Daemon')
|
|
|
|
|
|
|
|
_G.network = { }
|
|
|
|
|
|
|
|
local function netUp()
|
2017-09-05 06:09:31 +00:00
|
|
|
requireInjector(getfenv(1))
|
2017-08-03 05:46:39 +00:00
|
|
|
local Event = require('event')
|
2017-05-21 05:42:41 +00:00
|
|
|
|
2017-09-28 22:52:57 +00:00
|
|
|
for _,file in pairs(fs.list('sys/network')) do
|
|
|
|
local fn, msg = Util.run(getfenv(1), 'sys/network/' .. file)
|
|
|
|
if not fn then
|
2016-12-11 19:24:52 +00:00
|
|
|
printError(msg)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2017-08-03 05:46:39 +00:00
|
|
|
Event.on('device_detach', function()
|
|
|
|
if not device.wireless_modem then
|
|
|
|
Event.exitPullEvents()
|
2016-12-11 19:24:52 +00:00
|
|
|
end
|
2017-08-03 05:46:39 +00:00
|
|
|
end)
|
|
|
|
|
|
|
|
Event.pullEvents()
|
|
|
|
|
|
|
|
for _,c in pairs(network) do
|
|
|
|
c.active = false
|
|
|
|
os.queueEvent('network_detach', c)
|
2016-12-11 19:24:52 +00:00
|
|
|
end
|
2017-08-03 05:46:39 +00:00
|
|
|
os.queueEvent('network_down')
|
|
|
|
Event.pullEvent('network_down')
|
2016-12-11 19:24:52 +00:00
|
|
|
|
|
|
|
Util.clear(_G.network)
|
|
|
|
end
|
|
|
|
|
|
|
|
print('Net daemon started')
|
|
|
|
|
|
|
|
local function startNetwork()
|
|
|
|
print('Starting network services')
|
|
|
|
|
|
|
|
local success, msg = Util.runFunction(
|
|
|
|
Util.shallowCopy(getfenv(1)), netUp)
|
|
|
|
|
|
|
|
if not success and msg then
|
|
|
|
printError(msg)
|
|
|
|
end
|
|
|
|
print('Network services stopped')
|
|
|
|
end
|
|
|
|
|
|
|
|
if device.wireless_modem then
|
|
|
|
startNetwork()
|
|
|
|
else
|
|
|
|
print('No modem detected')
|
|
|
|
end
|
|
|
|
|
|
|
|
while true do
|
|
|
|
local e, deviceName = os.pullEvent('device_attach')
|
|
|
|
if deviceName == 'wireless_modem' then
|
|
|
|
startNetwork()
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
print('Net daemon stopped')
|