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 17, 2021
1 parent 5204313 commit 4c54de8
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 4c54de8

Please sign in to comment.