diff --git a/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua b/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua index a46fc674d95e202e8d7eda7c35707e86c71cc52e..676f5ab19d7aef721c66f2465c5ac1a4b4bd5db9 100644 --- a/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua +++ b/package/gluon-core/luasrc/usr/lib/lua/gluon/wireless.lua @@ -3,62 +3,13 @@ local site = require 'gluon.site' local util = require 'gluon.util' local unistd = require 'posix.unistd' -local dirent = require 'posix.dirent' +local iwinfo = require 'iwinfo' local M = {} -local function find_phy_by_path(path) - local device_path, phy_offset = string.match(path, "^(.+)%+(%d+)$") - - -- Special handling required for multi-phy devices - if device_path == nil then - device_path = path - phy_offset = '0' - end - - -- Find the device path. Either it's located at /sys/devices or /sys/devices/platform - local path_prefix = '' - if not unistd.access('/sys/devices/' .. device_path .. '/ieee80211') then - path_prefix = 'platform/' - end - - -- Get all available PHYs of the device and determine the one with the lowest index - local phy_names = dirent.dir('/sys/devices/' .. path_prefix .. device_path .. '/ieee80211') - local device_phy_idxs = {} - for _, v in ipairs(phy_names) do - local phy_idx = v:match('^phy(%d+)$') - - if phy_idx ~= nil then - table.insert(device_phy_idxs, tonumber(phy_idx)) - end - end - - table.sort(device_phy_idxs) - - -- Index starts at 1 - return 'phy' .. device_phy_idxs[tonumber(phy_offset) + 1] -end - -local function find_phy_by_macaddr(macaddr) - local addr = macaddr:lower() - for _, file in ipairs(util.glob('/sys/class/ieee80211/*/macaddress')) do - if util.trim(util.readfile(file)) == addr then - return file:match('([^/]+)/macaddress$') - end - end -end - function M.find_phy(config) - if not config or config.type ~= 'mac80211' then - return nil - elseif config.path then - return find_phy_by_path(config.path) - elseif config.macaddr then - return find_phy_by_macaddr(config.macaddr) - else - return nil - end + return iwinfo.nl80211.phyname(config['.name']) end local function get_addresses(radio)