Merge pull request #2339 from freifunk-gluon/status-page-iwinfo

gluon-status-page: use UCI + iwinfo to get channel information
This commit is contained in:
David Bauer 2022-01-02 19:18:53 +01:00 committed by GitHub
commit b95b857aa8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,7 +1,11 @@
<%- <%-
local iwinfo = require 'iwinfo'
local ubus = require 'ubus' local ubus = require 'ubus'
local unistd = require 'posix.unistd' local unistd = require 'posix.unistd'
local util = require 'gluon.util' local util = require 'gluon.util'
local wireless = require 'gluon.wireless'
local uci = require('simple-uci').cursor()
local translations = {} local translations = {}
local site_i18n = i18n 'gluon-site' local site_i18n = i18n 'gluon-site'
@ -35,22 +39,22 @@
return interfaces return interfaces
end end
local function get_radios(uconn) local function get_radios()
local radios = uconn:call("network.wireless", "status", {})
local ret = {} local ret = {}
for radio, info in pairs(radios) do wireless.foreach_radio(uci, function(radio)
if info.up then local channel = iwinfo.nl80211.channel(wireless.find_phy(radio))
if channel then
table.insert(ret, { table.insert(ret, {
name = radio, name = radio['.name'],
channel = info.config.channel, channel = channel,
}) })
end end
end end)
table.sort(ret, function(a, b) table.sort(ret, function(a, b)
return a.name < b.name return a.name < b.name
end) end)
return ret return ret
end end
@ -72,10 +76,11 @@
end end
local interfaces = get_interfaces(uconn) local interfaces = get_interfaces(uconn)
local radios = get_radios(uconn)
ubus.close(uconn) ubus.close(uconn)
local radios = get_radios()
local function sorted(t) local function sorted(t)
t = {unpack(t)} t = {unpack(t)}
table.sort(t) table.sort(t)