Передача прерывания gpio в приложение Android

У меня есть устройство Android 4.4.2 с разъемом UART, открытым для дополнительных модулей. GPIO также является частью этого разъема, который может дополнительно использоваться дополнительным модулем для отправки сигнала на мое устройство Android. это прерывание будет обрабатываться приложением Android.

Ниже приведены несколько способов, с помощью которых я мог бы добиться этого, но я не считаю, что это правильный способ сделать это,

  1. Прерывание GPIO передается приложению Android в качестве ключа ввода с помощью input_report_key()

  2. Реализована функция poll() для /sys/class/gpio/gpiox.

Но ни один из вышеперечисленных методов не кажется мне подходящим. Может ли кто-нибудь помочь мне узнать, есть ли какие-либо способы передать прерывание gpio в приложение Android?


person Duster2503    schedule 30.09.2014    source источник
comment
со вторым методом, использующим poll(), я мог заметить, что некоторые прерывания были пропущены. Есть ли способ, с помощью которого это можно преодолеть?   -  person Duster2503    schedule 08.10.2014
comment
Я бы назначил награду за этот вопрос, если бы у меня было больше представителей!   -  person ForeverLearning    schedule 04.08.2015


Ответы (1)


Спасибо за все ваши комментарии,

На самом деле я искал лучший способ передать kernel level GPIO interrupt android layer (или приложению).

Я реализовал следующим образом,

  • Экспортировал GPIO в ядро.
  • Опрос в HAL.
  • HAL Вызывает метод фреймворка (был зарегистрирован в init)
  • Метод обратного вызова Framework передает намерение конечному приложению.

Не использовал second method (input_report_key()), поскольку он использует input event framework, что, по моему мнению, не является правильным способом.

person Duster2503    schedule 22.07.2016
comment
Я предполагаю, что вы используете функцию poll() для опроса прерываний в HAL. Но выходит ли ваш poll() по прерыванию, когда телефон переходит в режим ожидания? - person Duster2503; 21.03.2017