[cervantes] wifi: try to connect to known network before listing (#4462)

Defines new function reconnectOrShowNetworkMenu(), which iterates over
available networks ordered by signal power, and check if we can connect
to saved SSIDs. If we can, then skip network list dialog.
pull/4463/head
Sergey Avseyev 5 years ago committed by Frans de Jonge
parent d113cb9475
commit 12c8d4fd17

@ -160,7 +160,7 @@ function Cervantes:initNetworkManager(NetworkMgr)
function NetworkMgr:turnOnWifi(complete_callback)
logger.info("Cervantes: enabling WiFi")
os.execute("./enable-wifi.sh")
self:showNetworkMenu(complete_callback)
self:reconnectOrShowNetworkMenu(complete_callback)
end
NetworkMgr:setWirelessBackend("wpa_supplicant", {ctrl_interface = "/var/run/wpa_supplicant/eth0"})
function NetworkMgr:obtainIP()

@ -280,6 +280,45 @@ function NetworkMgr:showNetworkMenu(complete_callback)
end)
end
function NetworkMgr:reconnectOrShowNetworkMenu(complete_callback)
local info = InfoMessage:new{text = _("Scanning…")}
UIManager:show(info)
UIManager:nextTick(function()
local network_list, err = self:getNetworkList()
UIManager:close(info)
if network_list == nil then
UIManager:show(InfoMessage:new{text = err})
return
end
table.sort(network_list,
function(l, r) return l.signal_quality > r.signal_quality end)
local success = false
table.foreach(network_list,
function(idx, network)
if network.password then
success = NetworkMgr:authenticateNetwork(network)
if success then
NetworkMgr:obtainIP()
if complete_callback then
complete_callback()
end
UIManager:show(InfoMessage:new{
text = T(_("Connected to network %1"), network.ssid),
timeout = 3,
})
return
end
end
end)
if not success then
UIManager:show(require("ui/widget/networksetting"):new{
network_list = network_list,
connect_callback = complete_callback,
})
end
end)
end
function NetworkMgr:saveNetwork(setting)
if not self.nw_settings then self:readNWSettings() end

Loading…
Cancel
Save