gluon-luci-wifi-config: don't use luci.sys.wifi.getiwinfo()

Directly using libiwinfo is more reliable.
This commit is contained in:
Matthias Schiffer 2015-05-04 19:07:33 +02:00
parent f4a3f73fcb
commit fadfc64e16

View File

@ -1,5 +1,6 @@
local uci = luci.model.uci.cursor() local uci = luci.model.uci.cursor()
local fs = require 'nixio.fs' local fs = require 'nixio.fs'
local iwinfo = require 'iwinfo'
local function find_phy_by_path(path) local function find_phy_by_path(path)
@ -17,9 +18,9 @@ local function find_phy_by_macaddr(macaddr)
end end
end end
local function txpower_list(iw) local function txpower_list(phy)
local list = iw.txpwrlist or { } local list = iwinfo.nl80211.txpwrlist(phy) or { }
local off = tonumber(iw.txpower_offset) or 0 local off = tonumber(iwinfo.nl80211.txpower_offset(phy)) or 0
local new = { } local new = { }
local prev = -1 local prev = -1
local _, val local _, val
@ -93,22 +94,19 @@ for _, radio in ipairs(radios) do
end end
if phy then if phy then
local iw = luci.sys.wifi.getiwinfo(phy) local txpowers = txpower_list(phy)
if iw then
local txpowers = txpower_list(iw)
if #txpowers > 1 then if #txpowers > 1 then
local tp = p:option(ListValue, radio .. '_txpower', translate("Transmission power")) local tp = p:option(ListValue, radio .. '_txpower', translate("Transmission power"))
tp.rmempty = true tp.rmempty = true
tp.default = uci:get('wireless', radio, 'txpower') or 'default' tp.default = uci:get('wireless', radio, 'txpower') or 'default'
tp:value('default', translate("(default)")) tp:value('default', translate("(default)"))
table.sort(txpowers, function(a, b) return a.driver_dbm > b.driver_dbm end) table.sort(txpowers, function(a, b) return a.driver_dbm > b.driver_dbm end)
for _, entry in ipairs(txpowers) do for _, entry in ipairs(txpowers) do
tp:value(entry.driver_dbm, "%i dBm (%i mW)" % {entry.display_dbm, entry.display_mw}) tp:value(entry.driver_dbm, "%i dBm (%i mW)" % {entry.display_dbm, entry.display_mw})
end
end end
end end
end end