目的
Kotlin/NativeでHello Worldが実行できたので、次はRaspberryPiのGPIOを触ってみたいと思います。
前にも書いた通り、pigpioを使います。
手順
-
pigpioをraspberrypiでビルド
http://abyz.me.uk/rpi/pigpio/download.html -
stub作成
macに、headerをコピーしてcinteropを実行cinterop -def pigpio.def -compiler-option -I`pwd`/PIGPIO -o pigpio.bc -target raspberrypi
total 336 drwxr-xr-x 3 hoso staff 96B 6 11 00:41 PIGPIO drwxr-xr-x 5 hoso staff 160B 6 11 00:48 pigpio.bc-build -rw------- 1 hoso staff 160K 6 11 00:48 pigpio.bc.klib -rw-r--r-- 1 hoso staff 20B 6 11 00:40 pigpio.def
で、できたなー、と思ったけど、実はGradleにcinteropを記載すればよかった。
https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#cinterop-supportcompilations.main { cinterops { pigpioInterop{ defFile project.file("src/nativeInterop/cinterop/pigpio.def") compilerOpts '-Istub_prepare/PIGPIO' } } }
-
linkの解消
ビルド時にlinkができないので、raspberrypi上でビルドしてできた.soをmacに持ってきて、linkerオプション追加して、ビルド完了
linkerOpts = ['-Llib', '-lpigpio']
-
リポジトリはこちら
https://gitlab.com/hoso-study/raspberrypi/kotlinnative-led -
今更ながら、
pigpioって、sudoしないといけないの?
https://github.com/fivdi/pigpio#limitations -
アプリがsudoしなきゃならないのはあれなので、pigpiodを動かして、アプリはそちらを利用するようにしたのを作った。
https://gitlab.com/hoso-study/raspberrypi/kotlinnative-led/-/tree/topic/pigpiod