From 1cba495fe0a7f7136f359ff006e47ca682be794c Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 13 Jan 2015 00:14:56 +0800 Subject: [PATCH] add PocketBook port of Koreader --- Makefile | 27 +++++++++++++++++ base | 2 +- .../modules/readeractivityindicator.lua | 5 ++-- frontend/device/input.lua | 5 ++-- frontend/device/pocketbook/device.lua | 15 +++++----- platform/pocketbook/koreader.app | 29 +++++++++++++++++++ 6 files changed, 71 insertions(+), 12 deletions(-) create mode 100755 platform/pocketbook/koreader.app diff --git a/Makefile b/Makefile index db01096f5..d41e9d94e 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,7 @@ INSTALL_DIR=koreader-$(MACHINE) PLATFORM_DIR=platform KINDLE_DIR=$(PLATFORM_DIR)/kindle KOBO_DIR=$(PLATFORM_DIR)/kobo +POCKETBOOK_DIR=$(PLATFORM_DIR)/pocketbook ANDROID_DIR=$(PLATFORM_DIR)/android ANDROID_LAUNCHER_DIR:=$(ANDROID_DIR)/luajit-launcher WIN32_DIR=$(PLATFORM_DIR)/win32 @@ -179,6 +180,32 @@ koboupdate: all tar czafh ../koreader-kobo-$(MACHINE)-$(VERSION).tar.gz \ -T koreader/ota/package.index --no-recursion +pbupdate: all + # ensure that the binaries were built for ARM + file $(INSTALL_DIR)/koreader/luajit | grep ARM || exit 1 + # remove old package if any + rm -f koreader-pocketbook-$(MACHINE)-$(VERSION).zip + # Pocketbook launching script + mkdir -p $(INSTALL_DIR)/applications + cp $(POCKETBOOK_DIR)/koreader.app $(INSTALL_DIR)/applications + # create new package + cd $(INSTALL_DIR) && \ + zip -9 -r \ + ../koreader-pocketbook-$(MACHINE)-$(VERSION).zip \ + koreader applications -x "koreader/resources/fonts/*" \ + "koreader/resources/icons/src/*" "koreader/spec/*" + # generate koboupdate package index file + zipinfo -1 koreader-pocketbook-$(MACHINE)-$(VERSION).zip > \ + $(INSTALL_DIR)/koreader/ota/package.index + echo "koreader/ota/package.index" >> $(INSTALL_DIR)/koreader/ota/package.index + # update index file in zip package + cd $(INSTALL_DIR) && zip -u ../koreader-pocketbook-$(MACHINE)-$(VERSION).zip \ + koreader/ota/package.index + # make gzip pbupdate for zsync OTA update + cd $(INSTALL_DIR) && \ + tar czafh ../koreader-pocketbook-$(MACHINE)-$(VERSION).tar.gz \ + -T koreader/ota/package.index --no-recursion + androidupdate: all mkdir -p $(ANDROID_LAUNCHER_DIR)/assets/module -rm $(ANDROID_LAUNCHER_DIR)/assets/module/koreader-* diff --git a/base b/base index 941047421..3ffa5dcb6 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 941047421763c56ab2d41da73a0e9cf23fea1437 +Subproject commit 3ffa5dcb6e70fa1342b07f95ebced4046608990c diff --git a/frontend/apps/reader/modules/readeractivityindicator.lua b/frontend/apps/reader/modules/readeractivityindicator.lua index 14db8aefc..27237e82d 100644 --- a/frontend/apps/reader/modules/readeractivityindicator.lua +++ b/frontend/apps/reader/modules/readeractivityindicator.lua @@ -8,8 +8,9 @@ local ReaderActivityIndicator = EventListener:new{} function ReaderActivityIndicator:init() local dev_mod = Device.model if dev_mod == "KindlePaperWhite" or dev_mod == "KindlePaperWhite2" or dev_mod == "KindleVoyage" or dev_mod == "KindleBasic" or dev_mod == "KindleTouch" then - require "liblipclua" - self.lipc_handle = lipc.init("com.github.koreader.activityindicator") + if (pcall(require, "liblipclua")) then + self.lipc_handle = lipc.init("com.github.koreader.activityindicator") + end end end diff --git a/frontend/device/input.lua b/frontend/device/input.lua index aaae4c135..1afec0ed3 100644 --- a/frontend/device/input.lua +++ b/frontend/device/input.lua @@ -143,8 +143,8 @@ wrapper for FFI input open Note that we adhere to the "." syntax here for compatibility. TODO: clean up separation FFI/this --]] -function Input.open(device) - input.open(device) +function Input.open(device, kobo_events) + input.open(device, kobo_events and 1 or 0) end --[[ @@ -341,6 +341,7 @@ function Input:handleTouchEv(ev) local touch_ges = self.gesture_detector:feedEvent(self.MTSlots) self.MTSlots = {} if touch_ges then + --DEBUG("ges", touch_ges) return Event:new("Gesture", self.gesture_detector:adjustGesCoordinate(touch_ges) ) diff --git a/frontend/device/pocketbook/device.lua b/frontend/device/pocketbook/device.lua index afec886f0..3be10b049 100644 --- a/frontend/device/pocketbook/device.lua +++ b/frontend/device/pocketbook/device.lua @@ -6,29 +6,30 @@ local function yes() return true end local PocketBook = Generic:new{ -- both the following are just for testing similar behaviour -- see ffi/framebuffer_mxcfb.lua - model = "KindlePaperWhite", - isKindle = yes, + model = "PocketBook", + isPocketBook = yes, isTouchDevice = yes, display_dpi = 212, - touch_dev = "/dev/input/event0", + touch_dev = "/dev/input/event1", -- probably useless + emu_events_dev = "/var/dev/shm/emu_events", } function PocketBook:init() -- this example uses the mxcfb framebuffer driver: self.screen = require("ffi/framebuffer_mxcfb"):new{device = self, debug = DEBUG} - self.input = require("device/input"):new{device = self} + self.input = require("device/input"):new{device = self, debug = DEBUG} -- we inject an input hook for debugging purposes. You probably don't want -- it after everything is implemented. self.input:registerEventAdjustHook(function(event) - DEBUG("got event:", event) end) -- no backlight management yet - self.input.open("/dev/input/event0") - self.input.open("/dev/input/event1") + os.remove(self.emu_events_dev) + os.execute("mkfifo " .. self.emu_events_dev) + self.input.open(self.emu_events_dev, 1) Generic.init(self) end diff --git a/platform/pocketbook/koreader.app b/platform/pocketbook/koreader.app new file mode 100755 index 000000000..7ecea0c2b --- /dev/null +++ b/platform/pocketbook/koreader.app @@ -0,0 +1,29 @@ +#!/bin/sh +export LC_ALL="en_US.UTF-8" + +# working directory of koreader +KOREADER_DIR=/mnt/ext1/koreader + +# update to new version from OTA directory +NEWUPDATE="${KOREADER_DIR}/ota/koreader.updated.tar" +INSTALLED="${KOREADER_DIR}/ota/koreader.installed.tar" +if [ -f $NEWUPDATE ]; then + # TODO: any graphic indication for the updating progress? + cd /mnt/ext1/ && tar xf $NEWUPDATE && mv $NEWUPDATE $INSTALLED +fi + +# we're always starting from our working directory +cd $KOREADER_DIR + +# export trained OCR data directory +export TESSDATA_PREFIX="data" + +# export dict directory +export STARDICT_DATA_DIR="data/dict" + +./reader.lua /mnt/ext1 2> crash.log + +if pidof reader.lua > /dev/null 2>&1 ; then + killall -TERM reader.lua +fi +