mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[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.
This commit is contained in:
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user