kobo: handle charging/uncharging event

pull/2310/head
Qingping Hou 8 years ago
parent 4540d51a6e
commit 816d0a551a

@ -143,6 +143,7 @@ dist-clean: clean
$(MAKE) -C $(KOR_BASE) dist-clean
$(MAKE) -C doc clean
ZIP_EXCLUDE=-x "*.swp" -x "*.swo" -x "*.orig" -x "*.un~"
# Don't bundle launchpad on touch devices..
ifeq ($(TARGET), kindle-legacy)
KINDLE_LEGACY_LAUNCHER:=launchpad
@ -164,7 +165,8 @@ kindleupdate: all
../koreader-$(DIST)-$(MACHINE)-$(VERSION).zip \
extensions koreader $(KINDLE_LEGACY_LAUNCHER) \
-x "koreader/resources/fonts/*" "koreader/ota/*" \
"koreader/resources/icons/src/*" "koreader/spec/*"
"koreader/resources/icons/src/*" "koreader/spec/*" \
$(ZIP_EXCLUDE)
# generate kindleupdate package index file
zipinfo -1 koreader-$(DIST)-$(MACHINE)-$(VERSION).zip > \
$(INSTALL_DIR)/koreader/ota/package.index
@ -196,7 +198,8 @@ koboupdate: all
zip -9 -r \
../koreader-kobo-$(MACHINE)-$(VERSION).zip \
koreader -x "koreader/resources/fonts/*" \
"koreader/resources/icons/src/*" "koreader/spec/*"
"koreader/resources/icons/src/*" "koreader/spec/*" \
$(ZIP_EXCLUDE)
# generate koboupdate package index file
zipinfo -1 koreader-kobo-$(MACHINE)-$(VERSION).zip > \
$(INSTALL_DIR)/koreader/ota/package.index
@ -228,7 +231,8 @@ pbupdate: all
zip -9 -r \
../koreader-pocketbook-$(MACHINE)-$(VERSION).zip \
applications -x "applications/koreader/resources/fonts/*" \
"applications/koreader/resources/icons/src/*" "applications/koreader/spec/*"
"applications/koreader/resources/icons/src/*" "applications/koreader/spec/*" \
$(ZIP_EXCLUDE)
# generate koboupdate package index file
zipinfo -1 koreader-pocketbook-$(MACHINE)-$(VERSION).zip > \
$(INSTALL_DIR)/applications/koreader/ota/package.index
@ -264,7 +268,8 @@ utupdate: all
zip -9 -r \
../koreader-$(DIST)-$(MACHINE)-$(VERSION).zip \
koreader -x "koreader/resources/fonts/*" "koreader/ota/*" \
"koreader/resources/icons/src/*" "koreader/spec/*"
"koreader/resources/icons/src/*" "koreader/spec/*" \
$(ZIP_EXCLUDE)
# generate update package index file
zipinfo -1 koreader-$(DIST)-$(MACHINE)-$(VERSION).zip > \
@ -293,7 +298,8 @@ androidupdate: all
cd $(INSTALL_DIR)/koreader && \
zip -9 -r \
../../koreader-android-$(MACHINE)-$(VERSION).zip \
* -x "resources/fonts/*" "resources/icons/src/*" "spec/*"
* -x "resources/fonts/*" "resources/icons/src/*" "spec/*" \
$(ZIP_EXCLUDE)
# generate android update package index file
zipinfo -1 koreader-android-$(MACHINE)-$(VERSION).zip > \
$(INSTALL_DIR)/koreader/ota/package.index

@ -1 +1 @@
Subproject commit 55032c87b2a7135819a20257b3b78c63a525a26b
Subproject commit 0f7eceea34b5c64a7ac968eb0ce208740930891c

@ -1,5 +1,4 @@
local Event = require("ui/event")
local util = require("ffi/util")
local DEBUG = require("dbg")
local function yes() return true end
@ -83,40 +82,6 @@ function Device:getPowerDevice()
return self.powerd
end
-- ONLY used for Kindle devices
function Device:intoScreenSaver()
local UIManager = require("ui/uimanager")
if self.charging_mode == false and self.screen_saver_mode == false then
self.screen:saveCurrentBB()
self.screen_saver_mode = true
-- On FW >= 5.7.2, we sigstop awesome, but we need it to show stuff...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -cont awesome")
end
end
UIManager:broadcastEvent(Event:new("FlushSettings"))
end
-- ONLY used for Kindle devices
function Device:outofScreenSaver()
if self.screen_saver_mode == true and self.charging_mode == false then
-- On FW >= 5.7.2, put awesome to sleep again...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -stop awesome")
end
-- wait for native system update screen before we recover saved
-- Blitbuffer.
util.usleep(1500000)
self.screen:restoreFromSavedBB()
self:resume()
if self:needsScreenRefreshAfterResume() then
self.screen:refreshFull()
end
self.powerd:refreshCapacity()
end
self.screen_saver_mode = false
end
function Device:rescheduleSuspend()
local UIManager = require("ui/uimanager")
UIManager:unschedule(self.suspend)
@ -179,6 +144,12 @@ function Device:onPowerEvent(ev)
end
end
-- Hardware specific method to handle usb plug in event
function Device:usbPlugIn() end
-- Hardware specific method to handle usb plug out event
function Device:usbPlugOut() end
-- Hardware specific method to suspend the device
function Device:suspend() end
@ -188,37 +159,8 @@ function Device:resume() end
-- Hardware specific method to power off the device
function Device:powerOff() end
function Device:usbPlugIn()
if self.charging_mode == false and self.screen_saver_mode == false then
self.screen:saveCurrentBB()
-- On FW >= 5.7.2, we sigstop awesome, but we need it to show stuff...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -cont awesome")
end
end
self.charging_mode = true
end
function Device:usbPlugOut()
if self.charging_mode == true and self.screen_saver_mode == false then
-- On FW >= 5.7.2, put awesome to sleep again...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -stop awesome")
end
-- Same as when going out of screensaver, wait for the native system
util.usleep(1500000)
self.screen:restoreFromSavedBB()
self.screen:refreshFull()
self.powerd:refreshCapacity()
end
--@TODO signal filemanager for file changes 13.06 2012 (houqp)
self.charging_mode = false
end
-- Hardware specific method to initialize network manager module
function Device:initNetworkManager()
end
function Device:initNetworkManager() end
--[[
prepare for application shutdown

@ -1,4 +1,6 @@
local Generic = require("device/generic/device")
local util = require("ffi/util")
local Event = require("ui/event")
local DEBUG = require("dbg")
local function yes() return true end
@ -32,6 +34,66 @@ function Kindle:initNetworkManager(NetworkMgr)
end
end
function Kindle:usbPlugIn()
if self.charging_mode == false and self.screen_saver_mode == false then
self.screen:saveCurrentBB()
-- On FW >= 5.7.2, we sigstop awesome, but we need it to show stuff...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -cont awesome")
end
end
self.charging_mode = true
end
function Kindle:intoScreenSaver()
if self.charging_mode == false and self.screen_saver_mode == false then
self.screen:saveCurrentBB()
self.screen_saver_mode = true
-- On FW >= 5.7.2, we sigstop awesome, but we need it to show stuff...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -cont awesome")
end
end
require("ui/uimanager"):broadcastEvent(Event:new("FlushSettings"))
end
function Kindle:outofScreenSaver()
if self.screen_saver_mode == true and self.charging_mode == false then
-- On FW >= 5.7.2, put awesome to sleep again...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -stop awesome")
end
-- wait for native system update screen before we recover saved
-- Blitbuffer.
util.usleep(1500000)
self.screen:restoreFromSavedBB()
self:resume()
if self:needsScreenRefreshAfterResume() then
self.screen:refreshFull()
end
self.powerd:refreshCapacity()
end
self.screen_saver_mode = false
end
function Kindle:usbPlugOut()
if self.charging_mode == true and self.screen_saver_mode == false then
-- On FW >= 5.7.2, put awesome to sleep again...
if os.getenv("AWESOME_STOPPED") == "yes" then
os.execute("killall -stop awesome")
end
-- Same as when going out of screensaver, wait for the native system
util.usleep(1500000)
self.screen:restoreFromSavedBB()
self.screen:refreshFull()
self.powerd:refreshCapacity()
end
--@TODO signal filemanager for file changes 13.06 2012 (houqp)
self.charging_mode = false
end
local Kindle2 = Kindle:new{
model = "Kindle2",
hasKeyboard = yes,

@ -130,7 +130,6 @@ function Kobo:init()
return "Light"
end
end,
-- NOTE: usb hotplug event is also available in /tmp/nickel-hardware-status
[102] = "Home",
[116] = "Power",
}
@ -141,6 +140,9 @@ function Kobo:init()
-- event2 is for MMA7660 sensor (3-Axis Orientation/Motion Detection)
self.input.open("/dev/input/event0") -- Light button and sleep slider
self.input.open("/dev/input/event1")
-- fake_events is only used for usb plug event so far
-- NOTE: usb hotplug event is also available in /tmp/nickel-hardware-status
self.input.open("fake_events")
if not self.needsTouchScreenProbe() then
self:initEventAdjustHooks()

@ -108,12 +108,12 @@ function UIManager:init()
self.event_handlers["Light"] = function()
Device:getPowerDevice():toggleFrontlight()
end
self.event_handlers["USBPlugIn"] = function()
self.event_handlers["Charging"] = function()
if Device.screen_saver_mode then
self.event_handlers["Suspend"]()
end
end
self.event_handlers["USBPlugOut"] = self.event_handlers["USBPlugIn"]
self.event_handlers["NotCharging"] = self.event_handlers["Charging"]
self.event_handlers["__default__"] = function(input_event)
if Device.screen_saver_mode then
-- Suspension in Kobo can be interrupted by screen updates. We

Loading…
Cancel
Save