+--- Get available channels from given wireless iface.
+-- @param iface Wireless interface (optional)
+-- @return Table of available channels
+function wifi.channels(iface)
+ local t = iwinfo.type(iface or "")
+ local cns
+ if iface and t and iwinfo[t] then
+ cns = iwinfo[t].freqlist(iface)
+ end
+
+ if not cns or #cns == 0 then
+ cns = {
+ {channel = 1, mhz = 2412},
+ {channel = 2, mhz = 2417},
+ {channel = 3, mhz = 2422},
+ {channel = 4, mhz = 2427},
+ {channel = 5, mhz = 2432},
+ {channel = 6, mhz = 2437},
+ {channel = 7, mhz = 2442},
+ {channel = 8, mhz = 2447},
+ {channel = 9, mhz = 2452},
+ {channel = 10, mhz = 2457},
+ {channel = 11, mhz = 2462}
+ }
+ end
+
+ return cns
+end
+
+
+--- LuCI system utilities / init related functions.
+-- @class module
+-- @name luci.sys.init
+init = {}
+init.dir = "/etc/init.d/"
+
+--- Get the names of all installed init scripts
+-- @return Table containing the names of all inistalled init scripts
+function init.names()
+ local names = { }
+ for name in fs.glob(init.dir.."*") do
+ names[#names+1] = fs.basename(name)
+ end
+ return names
+end
+
+--- Test whether the given init script is enabled
+-- @param name Name of the init script
+-- @return Boolean indicating whether init is enabled
+function init.enabled(name)
+ if fs.access(init.dir..name) then
+ return ( call(init.dir..name.." enabled") == 0 )
+ end
+ return false
+end
+
+--- Get the index of he given init script
+-- @param name Name of the init script
+-- @return Numeric index value
+function init.index(name)
+ if fs.access(init.dir..name) then
+ return call("source "..init.dir..name.." enabled; exit $START")
+ end
+end
+
+--- Enable the given init script
+-- @param name Name of the init script
+-- @return Boolean indicating success
+function init.enable(name)
+ if fs.access(init.dir..name) then
+ return ( call(init.dir..name.." enable") == 1 )
+ end
+end
+
+--- Disable the given init script
+-- @param name Name of the init script
+-- @return Boolean indicating success
+function init.disable(name)
+ if fs.access(init.dir..name) then
+ return ( call(init.dir..name.." disable") == 0 )
+ end
+end
+