Implement charging mode (#1285)

* Add charging-sdl package
* Include charging-sdl into the initramfs-extra
* [initramfs] Detect charging mode and use triggerhappy to start
charging-sdl when the power key is pressed
This commit is contained in:
Daniele Debernardi 2018-03-05 23:59:23 +01:00 committed by Oliver Smith
parent 19df13804c
commit f614c9df88
5 changed files with 70 additions and 16 deletions

View File

@ -0,0 +1,24 @@
pkgname=charging-sdl
pkgver=0.1
pkgrel=0
pkgdesc="SDL2 charging application for the initramfs"
url="https://github.com/postmarketOS/charging-sdl"
arch="all"
license="GPL3"
depends="sdl2 sdl2_ttf mesa-gl directfb"
makedepends="linux-headers sdl2-dev sdl2_ttf-dev"
subpackages=""
source="${pkgname}-${pkgver}.tar.gz::https://github.com/postmarketOS/charging-sdl/archive/${pkgver}.tar.gz"
options="!strip"
builddir="${srcdir}/${pkgname}-${pkgver}"
build() {
make
}
package() {
install -D -m755 "${builddir}"/charging_sdl \
"$pkgdir"/usr/bin/charging-sdl
}
sha512sums="61cb132da5780f230280eb9cd24971cc2ea038890b098ccd04f842eb80c2ebfa3a27d619e28d8a37fe64c5a3863fbab68e2842d830f7f4658e52888436647858 charging-sdl-0.1.tar.gz"

View File

@ -1,10 +1,11 @@
pkgname=postmarketos-mkinitfs
pkgver=0.5.11
pkgver=0.6.1
pkgrel=0
pkgdesc="Tool to generate initramfs images for postmarketOS"
url="https://github.com/postmarketOS"
# multipath-tools: kpartx
depends="busybox-extras lddtree cryptsetup kmod multipath-tools postmarketos-splash device-mapper parted e2fsprogs e2fsprogs-extra osk-sdl"
depends="busybox-extras lddtree cryptsetup kmod multipath-tools postmarketos-splash
device-mapper parted e2fsprogs e2fsprogs-extra osk-sdl charging-sdl triggerhappy"
triggers="$pkgname.trigger=/etc/postmarketos-mkinitfs/hooks:/usr/share/kernel/*"
source="init.sh.in init_functions.sh mkinitfs.sh"
arch="noarch"
@ -22,6 +23,6 @@ package() {
"$pkgdir/sbin/mkinitfs"
mkdir -p "$pkgdir/etc/postmarketos-mkinitfs/hooks/"
}
sha512sums="500c1e903ca9cf5dfe0102414b086643379d51d848e15eeed89da8ba9f3a286dfba139a29b8312a0df005e159a54ad08c84e078b7d70e6873cabb7d0abda4807 init.sh.in
eca1e4647494556be52b3eecffe2db75735006a6c53e8778630949808aabc464281ffa75a8744e22a5512c2de1eb5f92f9eb377a55ca4a7402ba8cc0705df83d init_functions.sh
c9b6dd04413509185f74b3d97bc01c97f8b9392e2f0dbccbd9c968efb7d375236b30337bd1637c467816c44d1c40feb354fe7206ac99faed0e1b207a30758cd0 mkinitfs.sh"
sha512sums="a09a48026a5cac308fa54e37c72e89fd7901e749f73720f3e8d3ec11a4d1527dbc1e5011aff53b1beffb6ff444c8df11a56e43d27ac0180ce8ddc79332be1d0d init.sh.in
f45548b295393cb078e4c456acef0eaac11705c4b5bc33981c320580c843231589fdfc78b25e182cd202435381d1be37085df01b6e272eee0af2ca0f89b3b4f5 init_functions.sh
5075df824ae86cc73590513a2212411a5aa2a840268c3850ea22e541717ce254e15b812f98c22e708fb0a21d87b8c6eb0059cf667ca3350412e39dad2d81879e mkinitfs.sh"

View File

@ -37,6 +37,7 @@ start_udhcpd
mount_boot_partition
extract_initramfs_extra @INITRAMFS_EXTRA@
start_charging_mode
wait_root_partition
resize_root_partition
unlock_root_partition

View File

@ -267,8 +267,8 @@ start_udhcpd() {
udhcpd
}
start_onscreen_keyboard(){
# Set up directfb and tslib for osk-sdl
setup_directfb_tslib(){
# Set up directfb and tslib
# Note: linux_input module is disabled since it will try to take over
# the touchscreen device from tslib (e.g. on the N900)
export DFBARGS="system=fbdev,no-cursor,disable-module=linux_input"
@ -276,11 +276,37 @@ start_onscreen_keyboard(){
if [ ! -z "$deviceinfo_dev_touchscreen" ]; then
export TSLIB_TSDEVICE="$deviceinfo_dev_touchscreen"
fi
}
start_onscreen_keyboard(){
setup_directfb_tslib
osk-sdl -n root -d "$partition" -c /etc/osk.conf -v > /osk-sdl.log 2>&1
unset DFBARGS
unset TSLIB_TSDEVICE
}
start_charging_mode(){
# Check cmdline for charging mode
chargingmodes="
androidboot.mode=charger
lpm_boot=1
androidboot.huawei_type=oem_rtc
startup=0x00010004
"
# shellcheck disable=SC2086
grep -Eq "$(echo $chargingmodes | tr ' ' '|')" /proc/cmdline || return
setup_directfb_tslib
# Get the font from osk-sdl config
fontpath=$(awk '/^keyboard-font/{print $3}' /etc/osk.conf)
# Set up triggerhappy config
{
echo "KEY_POWER 1 pgrep -x charging-sdl || charging-sdl -pcf $fontpath"
} >/etc/triggerhappy.conf
# Start it once and then start triggerhappy
charging-sdl -pcf "$fontpath" &
thd --deviceglob /dev/input/event* --triggers /etc/triggerhappy.conf
}
# $1: path to ppm.gz file
show_splash() {
gzip -c -d "$1" >/tmp/splash.ppm

View File

@ -92,17 +92,19 @@ get_modules()
# Get the paths to all binaries and their dependencies
BINARIES="/bin/busybox /bin/busybox-extras /usr/sbin/telnetd /sbin/kpartx"
BINARIES_EXTRA="
/sbin/cryptsetup
/sbin/dmsetup
/usr/sbin/parted
/sbin/e2fsck
/usr/sbin/resize2fs
/usr/bin/osk-sdl
/usr/lib/libGL.so.1
/usr/lib/ts/*
/usr/lib/libts*
$(find /usr/lib/directfb-* -name '*.so')
/lib/libz.so.1
/sbin/cryptsetup
/sbin/dmsetup
/sbin/e2fsck
/usr/bin/charging-sdl
/usr/bin/osk-sdl
/usr/lib/libGL.so.1
/usr/lib/libts*
/usr/lib/ts/*
/usr/sbin/parted
/usr/sbin/resize2fs
/usr/sbin/thd
"
get_binaries()
{