How get Power state on GPIO

Hello.
I have VIM3L on Android9.
In my project, it is necessary to receive feedback from VIM3L about its current state, how it works, or sleeps.
It seems to me that it is optimal to read the voltage level on one of the GPIO pins.
I readed the guide for managing a pin and I got it for Pin37.

DataOutputStream os = new DataOutputStream(mProcess.getOutputStream());
os.writeBytes(“echo out > /sys/class/gpio/gpio” + 431 + “/direction\n”);
os.writeBytes(“echo 1 > /sys/class/gpio/gpio” + 431 + “/value\n”);

Also, I readed how edit init.d here Would I change a startup service in init.rc? - #5 by Terry

but, I don’t understand anything in Android and I can’t imagine how to make a script and where to put it, so that before falling asleep, the pin is set to 0, and after waking up to 1.

Help me, please.

1 Like

Здравствуйте и добро пожаловать!
Почитайте эту ветку ,там что-то похожее обсуждалось .
Удачи!

Да, спасибо…
Действительно что-то похожее… Но увы, у меня нет достаточных знаний, чтобы понять что именно, где и как мне надо изменить для себя.
в каком-то месте какой-то скрипт должен читать состояние питания и менять состояние на пин37. разобрался только с последним… а где и как читать - нет. и ответов в той ветке не нашел.
без помощи не обойдусь.

Похоже дошло как читать и записывать в пин. )))
осталось понять, где читать состояние wake//sleep

Если не разберётесь , через пару недель команда Khadas выйдет с выходных ,напомните им .

Пока получилось так… буду пробовать

#!/system/bin/sh
echo ‘Power Feedback Service…’
echo 431 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio431/direction
echo 1 > /sys/class/gpio/gpio431/value
while true
do
pwrstate=$( cat /sys/power/state )
if [ “$pwrstate” = ‘freeze mem’ ]; then
echo 1 > /sys/class/gpio/gpio431/value
else
echo 0 > /sys/class/gpio/gpio431/value
fi
sleep 1
done

и это НЕ работает… cat /sys/power/state всегда возвращает одно и тоже - “freeze mem”…
это не может являться триггером, увы…

1 Like