diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..b2587ed --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,31 @@ +on: + push: + branches: + - master + paths: + - 'Makefile' + - 'recept.cpp' + pull_request: + paths: + - 'Makefile' + - 'recept.cpp' +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: pull docker image + run: docker pull ghcr.io/toltec-dev/toolchain:v1.3.1 + - name: Build + run: docker run -v $(pwd):/build -w /build ghcr.io/toltec-dev/toolchain:v1.3.1 make + - name: Save rM1 + uses: actions/upload-artifact@v3 + with: + name: rm1 + path: build/rm1 + - name: Save rM2 + uses: actions/upload-artifact@v3 + with: + name: rm2 + path: build/rm2 diff --git a/.gitignore b/.gitignore index 9f5c16b..3e3c10c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.sw[pmn] *.so +build/ diff --git a/Makefile b/Makefile index 64e3cda..ceca4c7 100644 --- a/Makefile +++ b/Makefile @@ -1,26 +1,41 @@ -default: compile +default: rm2 rm1 -compile: - ! mkdir precompiled - . /usr/local/oecore-x86_64/environment-setup-cortexa9hf-neon-oe-linux-gnueabi; \ +rm2: + mkdir -p build/rm2 for rs in `seq 2 32`; \ do \ - arm-oe-linux-gnueabi-g++ \ - -DRING_SIZE=$$rs \ - -march=armv7-a \ - -mfpu=neon \ - -mfloat-abi=hard \ - -mcpu=cortex-a9 \ - --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-neon-oe-linux-gnueabi \ - -Wall \ - -shared \ - -ldl \ - -fPIC \ - -O3 \ - recept.cpp \ - -o precompiled/librecept_rs$$rs.so; \ + $(CXX) \ + $(CXXFLAGS)\ + -DRING_SIZE=$$rs \ + -DINPUT_DEVICE=/dev/input/event1 \ + -Wall \ + -shared \ + -ldl \ + -fPIC \ + recept.cpp \ + -o build/rm2/librecept_rs$$rs.so; \ done -test: - scp precompiled/librecept_rs16.so root@remarkable:librecept.so +rm1: + mkdir -p build/rm1 + for rs in `seq 2 32`; \ + do \ + $(CXX) \ + $(CXXFLAGS)\ + -DRING_SIZE=$$rs \ + -DINPUT_DEVICE=/dev/input/event0 \ + -Wall \ + -shared \ + -ldl \ + -fPIC \ + recept.cpp \ + -o build/rm1/librecept_rs$$rs.so; \ + done + +test-rm1: + scp build/rm1/librecept_rs32.so root@remarkable:librecept.so + ssh remarkable "LD_PRELOAD=/home/root/librecept.so ls" + +test-rm2: + scp build/rm2/librecept_rs16.so root@remarkable:librecept.so ssh remarkable "LD_PRELOAD=/home/root/librecept.so ls" diff --git a/README.md b/README.md index 10e5ab1..05dacbe 100644 --- a/README.md +++ b/README.md @@ -55,3 +55,27 @@ How does it work? running on the tablet), `librecept` remembers the file handle. Subsequent `read`s from this handle are transparently filtered with a moving average of size 16 by default. + +Building +-------- + +To build for both devices run the following: + +```bash +source /opt/codex/rm10x/3.1.15/environment-setup-cortexa9hf-neon-remarkable-linux-gnueabi +make +``` + +To only build for rM1 run the following: + +```bash +source /opt/codex/rm10x/3.1.15/environment-setup-cortexa9hf-neon-remarkable-linux-gnueabi +make rm1 +``` + +To only build for rM1 run the following: + +```bash +source /opt/codex/rm10x/3.1.15/environment-setup-cortexa9hf-neon-remarkable-linux-gnueabi +make rm2 +``` diff --git a/install.sh b/install.sh index 8c89091..6616a36 100755 --- a/install.sh +++ b/install.sh @@ -13,6 +13,13 @@ echo read -p "Enter the hostname or IP address of your remarkable device [remarkable]:" remarkable remarkable=${remarkable:-remarkable} +if [[ "$(ssh root@$remarkable cat /sys/devices/soc0/machine)" == "reMarkable 2*" ]]; +then \ + device=rm2 +else \ + device=rm1 +fi + echo echo "Chose the amount of smoothing you want to apply to pen events. Larger values will" echo "smooth more, but will also lead to larger perceived latencies." @@ -28,7 +35,7 @@ then \ ssh root@$remarkable "grep -qxF 'Environment=LD_PRELOAD=/usr/lib/librecept.so' /lib/systemd/system/xochitl.service && sed -i '/Environment=LD_PRELOAD=\/usr\/lib\/librecept.so/d' /lib/systemd/system/xochitl.service" else \ echo "Installing ReCept with ring size ${ring_size}..." - scp ./precompiled/librecept_rs${ring_size}.so root@$remarkable:/usr/lib/librecept.so + scp ./build/$device/librecept_rs${ring_size}.so root@$remarkable:/usr/lib/librecept.so ssh root@$remarkable "grep -qxF 'Environment=LD_PRELOAD=/usr/lib/librecept.so' /lib/systemd/system/xochitl.service || sed -i 's#\[Service\]#[Service]\nEnvironment=LD_PRELOAD=/usr/lib/librecept.so#' /lib/systemd/system/xochitl.service" fi diff --git a/precompiled/librecept_rs10.so b/precompiled/librecept_rs10.so deleted file mode 100755 index dd1f0ae..0000000 Binary files a/precompiled/librecept_rs10.so and /dev/null differ diff --git a/precompiled/librecept_rs11.so b/precompiled/librecept_rs11.so deleted file mode 100755 index 715cc1b..0000000 Binary files a/precompiled/librecept_rs11.so and /dev/null differ diff --git a/precompiled/librecept_rs12.so b/precompiled/librecept_rs12.so deleted file mode 100755 index 51e305d..0000000 Binary files a/precompiled/librecept_rs12.so and /dev/null differ diff --git a/precompiled/librecept_rs13.so b/precompiled/librecept_rs13.so deleted file mode 100755 index 28afd6b..0000000 Binary files a/precompiled/librecept_rs13.so and /dev/null differ diff --git a/precompiled/librecept_rs14.so b/precompiled/librecept_rs14.so deleted file mode 100755 index 2c94323..0000000 Binary files a/precompiled/librecept_rs14.so and /dev/null differ diff --git a/precompiled/librecept_rs15.so b/precompiled/librecept_rs15.so deleted file mode 100755 index 3e460ed..0000000 Binary files a/precompiled/librecept_rs15.so and /dev/null differ diff --git a/precompiled/librecept_rs16.so b/precompiled/librecept_rs16.so deleted file mode 100755 index 7dbd6bb..0000000 Binary files a/precompiled/librecept_rs16.so and /dev/null differ diff --git a/precompiled/librecept_rs17.so b/precompiled/librecept_rs17.so deleted file mode 100755 index 3a72c9e..0000000 Binary files a/precompiled/librecept_rs17.so and /dev/null differ diff --git a/precompiled/librecept_rs18.so b/precompiled/librecept_rs18.so deleted file mode 100755 index 229f5a3..0000000 Binary files a/precompiled/librecept_rs18.so and /dev/null differ diff --git a/precompiled/librecept_rs19.so b/precompiled/librecept_rs19.so deleted file mode 100755 index 2bcefc0..0000000 Binary files a/precompiled/librecept_rs19.so and /dev/null differ diff --git a/precompiled/librecept_rs2.so b/precompiled/librecept_rs2.so deleted file mode 100755 index 2f9d671..0000000 Binary files a/precompiled/librecept_rs2.so and /dev/null differ diff --git a/precompiled/librecept_rs20.so b/precompiled/librecept_rs20.so deleted file mode 100755 index b9f0df3..0000000 Binary files a/precompiled/librecept_rs20.so and /dev/null differ diff --git a/precompiled/librecept_rs21.so b/precompiled/librecept_rs21.so deleted file mode 100755 index 070b694..0000000 Binary files a/precompiled/librecept_rs21.so and /dev/null differ diff --git a/precompiled/librecept_rs22.so b/precompiled/librecept_rs22.so deleted file mode 100755 index 1d0f002..0000000 Binary files a/precompiled/librecept_rs22.so and /dev/null differ diff --git a/precompiled/librecept_rs23.so b/precompiled/librecept_rs23.so deleted file mode 100755 index 275a6c1..0000000 Binary files a/precompiled/librecept_rs23.so and /dev/null differ diff --git a/precompiled/librecept_rs24.so b/precompiled/librecept_rs24.so deleted file mode 100755 index c98e998..0000000 Binary files a/precompiled/librecept_rs24.so and /dev/null differ diff --git a/precompiled/librecept_rs25.so b/precompiled/librecept_rs25.so deleted file mode 100755 index 97b5053..0000000 Binary files a/precompiled/librecept_rs25.so and /dev/null differ diff --git a/precompiled/librecept_rs26.so b/precompiled/librecept_rs26.so deleted file mode 100755 index 8ee80dc..0000000 Binary files a/precompiled/librecept_rs26.so and /dev/null differ diff --git a/precompiled/librecept_rs27.so b/precompiled/librecept_rs27.so deleted file mode 100755 index 073bae0..0000000 Binary files a/precompiled/librecept_rs27.so and /dev/null differ diff --git a/precompiled/librecept_rs28.so b/precompiled/librecept_rs28.so deleted file mode 100755 index ba5e6b6..0000000 Binary files a/precompiled/librecept_rs28.so and /dev/null differ diff --git a/precompiled/librecept_rs29.so b/precompiled/librecept_rs29.so deleted file mode 100755 index ba312b9..0000000 Binary files a/precompiled/librecept_rs29.so and /dev/null differ diff --git a/precompiled/librecept_rs3.so b/precompiled/librecept_rs3.so deleted file mode 100755 index 4d780f0..0000000 Binary files a/precompiled/librecept_rs3.so and /dev/null differ diff --git a/precompiled/librecept_rs30.so b/precompiled/librecept_rs30.so deleted file mode 100755 index 0446a9c..0000000 Binary files a/precompiled/librecept_rs30.so and /dev/null differ diff --git a/precompiled/librecept_rs31.so b/precompiled/librecept_rs31.so deleted file mode 100755 index 2411fc0..0000000 Binary files a/precompiled/librecept_rs31.so and /dev/null differ diff --git a/precompiled/librecept_rs32.so b/precompiled/librecept_rs32.so deleted file mode 100755 index c2e10cf..0000000 Binary files a/precompiled/librecept_rs32.so and /dev/null differ diff --git a/precompiled/librecept_rs4.so b/precompiled/librecept_rs4.so deleted file mode 100755 index 310619a..0000000 Binary files a/precompiled/librecept_rs4.so and /dev/null differ diff --git a/precompiled/librecept_rs5.so b/precompiled/librecept_rs5.so deleted file mode 100755 index 8b115d9..0000000 Binary files a/precompiled/librecept_rs5.so and /dev/null differ diff --git a/precompiled/librecept_rs6.so b/precompiled/librecept_rs6.so deleted file mode 100755 index 9dd5f8e..0000000 Binary files a/precompiled/librecept_rs6.so and /dev/null differ diff --git a/precompiled/librecept_rs7.so b/precompiled/librecept_rs7.so deleted file mode 100755 index 33d7f03..0000000 Binary files a/precompiled/librecept_rs7.so and /dev/null differ diff --git a/precompiled/librecept_rs8.so b/precompiled/librecept_rs8.so deleted file mode 100755 index 59d0742..0000000 Binary files a/precompiled/librecept_rs8.so and /dev/null differ diff --git a/precompiled/librecept_rs9.so b/precompiled/librecept_rs9.so deleted file mode 100755 index 8f6b4f3..0000000 Binary files a/precompiled/librecept_rs9.so and /dev/null differ diff --git a/recept.cpp b/recept.cpp index 4a9ae85..02b24fd 100644 --- a/recept.cpp +++ b/recept.cpp @@ -5,6 +5,12 @@ #ifndef RING_SIZE #define RING_SIZE 16 #endif +#ifndef INPUT_DEVICE +#define _INPUT_DEVICE "/dev/input/event1" +#else +#define toString(_arg) #_arg +#define _INPUT_DEVICE toString(INPUT_DEVICE) +#endif template class ring { @@ -152,7 +158,7 @@ int open(const char* filename, int flags) { int fd = real_open(filename, flags); - if (strcmp(filename, "/dev/input/event1") == 0) { + if (strcmp(filename, _INPUT_DEVICE) == 0) { printf(">| someone is trying to open event1, let's remember the fd!\n"); printf(">| (psssst: it is %d)\n", fd);