Skip to content

Commit

Permalink
gluon-status-page: use UCI + iwinfo to get channel information
Browse files Browse the repository at this point in the history
The network.wireless status ubus call only returns the configured
channel from UCI, breaking the status page in outdoor mode, where the
configuration contains 'auto' instead of a number.

Fixes: 0d3fa6b ("gluon-status-page: use ubus to get radio channels")
Closes #2336
  • Loading branch information
neocturne committed Dec 15, 2021
1 parent e153ba6 commit 201e159
Showing 1 changed file with 14 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
<%-
local iwinfo = require 'iwinfo'
local ubus = require 'ubus'
local unistd = require 'posix.unistd'
local util = require 'gluon.util'
local wireless = require 'gluon.wireless'

local uci = require('simple-uci').cursor()

local translations = {}
local site_i18n = i18n 'gluon-site'
Expand Down Expand Up @@ -35,22 +39,22 @@
return interfaces
end

local function get_radios(uconn)
local radios = uconn:call("network.wireless", "status", {})
local function get_radios()
local ret = {}

for radio, info in pairs(radios) do
if info.up then
wireless.foreach_radio(uci, function(radio)
local channel = iwinfo.nl80211.channel(wireless.find_phy(radio))
if channel then
table.insert(ret, {
name = radio,
channel = info.config.channel,
name = radio['.name'],
channel = channel,
})
end
end

end)
table.sort(ret, function(a, b)
return a.name < b.name
end)

return ret
end

Expand All @@ -72,10 +76,11 @@
end

local interfaces = get_interfaces(uconn)
local radios = get_radios(uconn)

ubus.close(uconn)

local radios = get_radios()

local function sorted(t)
t = {unpack(t)}
table.sort(t)
Expand Down

0 comments on commit 201e159

Please sign in to comment.