Merge luci.sys.wifi.channels to iwinfo
authorSteven Barth <steven@midlink.org>
Sun, 15 Nov 2009 15:46:27 +0000 (15:46 +0000)
committerSteven Barth <steven@midlink.org>
Sun, 15 Nov 2009 15:46:27 +0000 (15:46 +0000)
libs/sys/luasrc/sys.lua
modules/admin-full/luasrc/model/cbi/admin_network/wifi.lua

index 1708a27355ec8889b0562d436d14a6b10f56775b..c09c5e273ebbb142b81410005e7bb804bc41a55a 100644 (file)
@@ -687,27 +687,25 @@ end
 -- @param iface        Wireless interface (optional)
 -- @return             Table of available channels
 function wifi.channels(iface)
-       local cmd = "iwlist " .. ( iface or "" ) .. " freq 2>/dev/null"
-       local cns = { }
-
-       local fd = io.popen(cmd)
-       if fd then
-               local ln, c, f
-               while true do
-                       ln = fd:read("*l")
-                       if not ln then break end
-                       c, f = ln:match("Channel (%d+) : (%d+%.%d+) GHz")
-                       if c and f then
-                               cns[tonumber(c)] = tonumber(f)
-                       end
-               end
-               fd:close()
+       local t = iwinfo.type(iface)
+       local cns
+       if t and iwinfo[t] then
+               cns = iwinfo[t].freqlist(iface)
        end
 
-       if not next(cns) then
+       if not cns or #cns == 0 then
                cns = {
-                       2.412, 2.417, 2.422, 2.427, 2.432, 2.437,
-                       2.442, 2.447, 2.452, 2.457, 2.462
+                       {channel =  1, mhz = 2.412},
+                       {channel =  2, mhz = 2.417},
+                       {channel =  3, mhz = 2.422},
+                       {channel =  4, mhz = 2.427},
+                       {channel =  5, mhz = 2.432},
+                       {channel =  6, mhz = 2.437},
+                       {channel =  7, mhz = 2.442},
+                       {channel =  8, mhz = 2.447},
+                       {channel =  9, mhz = 2.452},
+                       {channel = 10, mhz = 2.457},
+                       {channel = 11, mhz = 2.462}
                }
        end
 
index 78d76305645c824c6f9e96e74e2c1ede63e79834..00bd560fc2961abaa0a7c45422220922f8568652 100644 (file)
@@ -91,8 +91,8 @@ local nsantenna = m:get(arg[1], "antenna")
 
 ch = s:taboption("general", Value, "channel", translate("Channel"))
 ch:value("auto", translate("auto"))
-for c, f in luci.util.kspairs(luci.sys.wifi.channels()) do
-       ch:value(c, "%i (%.3f GHz)" %{ c, f })
+for _, f in ipairs(luci.sys.wifi.channels()) do
+       ch:value(f.channel, "%i (%.3f GHz)" %{ f.channel, f.mhz })
 end