From be1a637c3bf502aa5c369604d741e75cbb40d079 Mon Sep 17 00:00:00 2001 From: Giorgio Micotti Date: Mon, 9 Sep 2013 09:04:09 +0200 Subject: [PATCH] DO NOT MERGE initial suspend support for Kobo --- Makefile | 2 +- frontend/ui/device.lua | 18 ++++++++++++++++++ frontend/ui/inputevent.lua | 9 +++++++++ frontend/ui/uimanager.lua | 4 ++++ kobo_suspend.sh | 30 ++++++++++++++++++++++++++++++ 5 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 kobo_suspend.sh diff --git a/Makefile b/Makefile index cc974d96d..3abf60e36 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ INSTALL_DIR=koreader-$(MACHINE) # files to link from main directory INSTALL_FILES=reader.lua frontend resources koreader.sh \ - koreader_kobo.sh defaults.lua \ + koreader_kobo.sh kobo_suspend.sh defaults.lua \ git-rev README.md COPYING # for gettext diff --git a/frontend/ui/device.lua b/frontend/ui/device.lua index 208d1c2b7..925ad55e9 100644 --- a/frontend/ui/device.lua +++ b/frontend/ui/device.lua @@ -152,6 +152,24 @@ function Device:outofScreenSaver() self.screen_saver_mode = false end +function Device:Suspend() + UIManager:show(InfoMessage:new{ + text = _("Standby"), + timeout = 4, + }) + if self.fl ~= nil then + self.fl:sleep() + end + os.execute("./kobo_suspend.sh &") +end + +function Device:Resume() + if self.fl ~= nil then + self.fl:resume() + end + -- Screen:refresh(0) +end + function Device:usbPlugIn() --os.execute("echo 'usb in' >> /mnt/us/event_test.txt") if self.charging_mode == false and self.screen_saver_mode == false then diff --git a/frontend/ui/inputevent.lua b/frontend/ui/inputevent.lua index 0ee8b23d3..2c90770c2 100644 --- a/frontend/ui/inputevent.lua +++ b/frontend/ui/inputevent.lua @@ -423,6 +423,15 @@ function Input:handleKeyBoardEv(ev) return keycode end + -- Kobo sleep + if keycode == "Power" then + if ev.value == EVENT_VALUE_KEY_PRESS then + return "Suspend" + else + return "Resume" + end + end + if ev.value == EVENT_VALUE_KEY_RELEASE and keycode == "Light" then return keycode diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 68853b053..7de709092 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -293,6 +293,10 @@ function UIManager:run() Device:usbPlugOut() elseif input_event == "Light" then Device:getFrontlight():toggle() + elseif input_event == "Suspend" then + Device:Suspend() + elseif input_event == "Resume" then + Device:Resume() else self:sendEvent(input_event) end diff --git a/kobo_suspend.sh b/kobo_suspend.sh new file mode 100644 index 000000000..1aa3abd38 --- /dev/null +++ b/kobo_suspend.sh @@ -0,0 +1,30 @@ +#!/bin/sh +export PATH=$PATH:/sbin:/usr/sbin + +ts_file=/tmp/back_from_suspend + +if test -e $ts_file ; then + sec_back_suspend=$(stat -t $ts_file | awk '{print $13}' ) + delta_sec=$(( $(date +%s) - $sec_back_suspend )) + echo sec_back_suspend=$sec_back_suspend delta_sec=$delta_sec >> /tmp/event_test.txt + test $delta_sec -gt 2 || exit +fi + +sleep 1 + +if lsmod | grep -q sdio_wifi_pwr ; then + wlarm_le -i eth0 down + ifconfig eth0 down + /sbin/rmmod -r dhd + /sbin/rmmod -r sdio_wifi_pwr +fi + + +sleep 1 + +sync +echo 1 > /sys/power/state-extended +echo mem > /sys/power/state +echo 0 > /sys/power/state-extended + +touch $ts_file