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 freifunk-gluon#2336
  • Loading branch information
neocturne authored and mkg20001 committed Dec 21, 2021
1 parent fdc79c5 commit 82484bc
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 82484bc

Please sign in to comment.