libs/sys: implement luci.sys.wifi.getiwinfo() oop interface
[project/luci.git] / libs / sys / luasrc / sys.lua
index d570770..1708a27 100644 (file)
@@ -25,18 +25,19 @@ limitations under the License.
 ]]--
 
 
 ]]--
 
 
-local io    = require "io"
-local os    = require "os"
-local table = require "table"
-local nixio = require "nixio"
-local fs    = require "nixio.fs"
+local io     = require "io"
+local os     = require "os"
+local table  = require "table"
+local nixio  = require "nixio"
+local fs     = require "nixio.fs"
+local iwinfo = require "iwinfo"
 
 local luci  = {}
 luci.util   = require "luci.util"
 luci.ip     = require "luci.ip"
 
 
 local luci  = {}
 luci.util   = require "luci.util"
 luci.ip     = require "luci.ip"
 
-local tonumber, ipairs, pairs, pcall, type, next =
-       tonumber, ipairs, pairs, pcall, type, next
+local tonumber, ipairs, pairs, pcall, type, next, setmetatable =
+       tonumber, ipairs, pairs, pcall, type, next, setmetatable
 
 
 --- LuCI Linux and POSIX system utilities.
 
 
 --- LuCI Linux and POSIX system utilities.
@@ -617,6 +618,21 @@ end
 -- @name       luci.sys.wifi
 wifi = {}
 
 -- @name       luci.sys.wifi
 wifi = {}
 
+--- Get wireless information for given interface.
+-- @param ifname        String containing the interface name
+-- @return              A wrapped iwinfo object instance
+function wifi.getiwinfo(ifname)
+       local t = iwinfo.type(ifname)
+       if t then
+               local x = iwinfo[t]
+               return setmetatable({}, {
+                       __index = function(t, k)
+                               if x[k] then return x[k](ifname) end
+                       end
+               })
+       end
+end
+
 --- Get iwconfig output for all wireless devices.
 -- @return     Table of tables containing the iwconfing output for each wifi device
 function wifi.getiwconfig()
 --- Get iwconfig output for all wireless devices.
 -- @return     Table of tables containing the iwconfing output for each wifi device
 function wifi.getiwconfig()