chore: remove all echo shell out in kobo resume routine

pull/2522/head
Qingping Hou 7 years ago
parent 9b7aba3fba
commit f402ee5f6f

@ -355,21 +355,20 @@ function Kobo:suspend()
-]]
-- NOTE: Sets gSleep_Mode_Suspend to 1. Used as a flag throughout the
-- kernel to suspend/resume various subsystems
-- cf. kernel/power/main.c @ L#207
f = io.open("/sys/power/state-extended", "w")
if not f then
logger.err("Cannot open /sys/power/state-extended for writing!")
return false
end
-- NOTE: Sets gSleep_Mode_Suspend to 1. Used as a flag throughout the
-- kernel to suspend/resume various subsystems
-- cf. kernel/power/main.c @ L#207
re, err_msg, err_code = f:write("1\n")
logger.info("Write syscall returned: ", re)
io.close(f)
logger.info("Kobo Suspend: Asked the kernel to put subsystems to sleep, ret:", re)
if not re then
logger.err('write error: ', err_msg, err_code)
end
io.close(f)
logger.info("Kobo Suspend: Asked the kernel to put subsystems to sleep")
util.sleep(2)
logger.info("Kobo Suspend: Waited for 2s because of reasons...")
@ -400,7 +399,14 @@ function Kobo:suspend()
logger.info("Kobo Suspend: Asking for a suspend to RAM . . .")
f = io.open("/sys/power/state", "w")
if not f then
-- TODO: update state-extended?
-- reset state-extend back to 0 since we are giving up
local ext_fd = io.open("/sys/power/state-extended", "w")
if not ext_fd then
logger.err("Cannot open /sys/power/state-extended for writing!")
else
ext_fd:write("0\n")
io.close(ext_fd)
end
return false
end
re, err_msg, err_code = f:write("mem\n")
@ -441,17 +447,29 @@ end
function Kobo:resume()
-- Now that we're up, unflag subsystems for suspend...
os.execute("echo 0 > /sys/power/state-extended")
logger.info("Kobo Suspend: Unflagged kernel subsystems for suspend")
-- NOTE: Sets gSleep_Mode_Suspend to 0. Used as a flag throughout the
-- kernel to suspend/resume various subsystems
-- cf. kernel/power/main.c @ L#207
local f = io.open("/sys/power/state-extended", "w")
if not f then
logger.err("Cannot open /sys/power/state-extended for writing!")
return false
end
local re, err_msg, err_code = f:write("0\n")
io.close(f)
logger.info("Kobo Suspend: Unflagged kernel subsystems for suspend, ret:", re)
if not re then
logger.err('write error: ', err_msg, err_code)
end
-- HACK: wait a bit (0.1 sec) for the kernel to catch up
util.usleep(100000)
-- cf. #1862, I can reliably break IR touch input on resume...
-- cf. also #1943 for the rationale behind applying this workaorund in every case...
local f = io.open("/sys/devices/virtual/input/input1/neocmd", "r")
f = io.open("/sys/devices/virtual/input/input1/neocmd", "r")
if f ~= nil then
f:write("a\n")
io.close(f)
os.execute("echo 'a' > /sys/devices/virtual/input/input1/neocmd")
end
end

Loading…
Cancel
Save