From 011370882f3d6da5c8f59b9c90c006182918cfa2 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Fri, 8 Feb 2019 22:29:11 +0100 Subject: [PATCH] [chore] Some Wi-Fi tweaks (#4564) * On Kobo, kill WiFi on startup if we detect an inconsistent state... Untested, not terribly pretty. The other solution is to slow down the Wi-Fi meny by doing the same check for the "Wi-Fi connection" checkbox as in the later wifi_status one... * Don't enable auto_restore_wifi by default It's liable to silently murder batteries for no good reason, given that we prompt to enable WiFi by default when needed, and we otherwise have no actual need to keep WiFi on in the background. re #2215 (in particular, this directly contradicts @houqp in https://github.com/koreader/koreader/pull/2215#discussion_r74696133 ;)). --- frontend/device/generic/device.lua | 2 +- frontend/ui/network/manager.lua | 14 +++++++++++--- spec/unit/network_manager_spec.lua | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 6a2aadc99..fc02b7765 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -154,7 +154,7 @@ function Device:onPowerEvent(ev) local UIManager = require("ui/uimanager") UIManager:unschedule(self.suspend) local network_manager = require("ui/network/manager") - if network_manager.wifi_was_on and G_reader_settings:nilOrTrue("auto_restore_wifi") then + if network_manager.wifi_was_on and G_reader_settings:isTrue("auto_restore_wifi") then network_manager:restoreWifiAsync() end self:resume() diff --git a/frontend/ui/network/manager.lua b/frontend/ui/network/manager.lua index 4e7e0c43e..8286c0c80 100644 --- a/frontend/ui/network/manager.lua +++ b/frontend/ui/network/manager.lua @@ -5,6 +5,7 @@ local InfoMessage = require("ui/widget/infomessage") local LuaSettings = require("luasettings") local UIManager = require("ui/uimanager") local ffiutil = require("ffi/util") +local logger = require("logger") local _ = require("gettext") local T = ffiutil.template @@ -15,8 +16,15 @@ function NetworkMgr:readNWSettings() end function NetworkMgr:init() + -- On Kobo, kill WiFi if NetworkMgr:isWifiOn() and NOT NetworkMgr:isConnected() + -- (i.e., if the launcher left the WiFi in an inconsistent state: modules loaded, but no route to gateway). + if Device:isKobo() and self:isWifiOn() and not self:isConnected() then + logger.info("Kobo WiFi: Left in an inconsistent state by launcher!") + self:turnOffWifi() + end + self.wifi_was_on = G_reader_settings:isTrue("wifi_was_on") - if self.wifi_was_on and G_reader_settings:nilOrTrue("auto_restore_wifi") then + if self.wifi_was_on and G_reader_settings:isTrue("auto_restore_wifi") then self:restoreWifiAsync() end end @@ -186,9 +194,9 @@ end function NetworkMgr:getRestoreMenuTable() return { text = _("Automatically restore Wi-Fi connection after resume"), - checked_func = function() return G_reader_settings:nilOrTrue("auto_restore_wifi") end, + checked_func = function() return G_reader_settings:isTrue("auto_restore_wifi") end, enabled_func = function() return Device:isKobo() or Device:isCervantes() end, - callback = function() G_reader_settings:flipNilOrTrue("auto_restore_wifi") end, + callback = function() G_reader_settings:flipNilOrFalse("auto_restore_wifi") end, } end diff --git a/spec/unit/network_manager_spec.lua b/spec/unit/network_manager_spec.lua index 94f88e96d..0c1550673 100644 --- a/spec/unit/network_manager_spec.lua +++ b/spec/unit/network_manager_spec.lua @@ -6,6 +6,7 @@ describe("network_manager module", function() local release_ip_called local function clearState() + G_reader_settings:saveSetting("auto_restore_wifi", true) turn_on_wifi_called = 0 turn_off_wifi_called = 0 obtain_ip_called = 0