mirror of
https://github.com/eclipse/upm.git
synced 2025-03-24 01:10:22 +03:00
ttp223: add Java isr callbacks
Signed-off-by: Petre Eftime <petre.p.eftime@intel.com> Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
parent
bdacb6c640
commit
a0518976c6
@ -1,6 +1,15 @@
|
|||||||
%module javaupm_ttp223
|
%module (directors=1, docstring="TTP223 Touch Sensor") javaupm_ttp223
|
||||||
|
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
|
|
||||||
|
%feature("director") IsrCallback;
|
||||||
|
|
||||||
|
%ignore generic_callback_isr;
|
||||||
|
%include "../IsrCallback.h"
|
||||||
|
|
||||||
|
%apply int {mraa::Edge}
|
||||||
|
|
||||||
|
|
||||||
%{
|
%{
|
||||||
#include "ttp223.h"
|
#include "ttp223.h"
|
||||||
%}
|
%}
|
||||||
|
@ -39,6 +39,7 @@ TTP223::TTP223(unsigned int pin) {
|
|||||||
}
|
}
|
||||||
mraa_gpio_dir(m_gpio, MRAA_GPIO_IN);
|
mraa_gpio_dir(m_gpio, MRAA_GPIO_IN);
|
||||||
m_name = "ttp223";
|
m_name = "ttp223";
|
||||||
|
m_isrInstalled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
TTP223::~TTP223() {
|
TTP223::~TTP223() {
|
||||||
@ -57,3 +58,26 @@ int TTP223::value() {
|
|||||||
bool TTP223::isPressed() {
|
bool TTP223::isPressed() {
|
||||||
return this->value() == 1;
|
return this->value() == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef JAVACALLBACK
|
||||||
|
void TTP223::installISR(mraa::Edge level, IsrCallback *cb)
|
||||||
|
{
|
||||||
|
installISR(level, generic_callback_isr, cb);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void TTP223::installISR(mraa::Edge level, void (*isr)(void *), void *arg)
|
||||||
|
{
|
||||||
|
if (m_isrInstalled)
|
||||||
|
uninstallISR();
|
||||||
|
|
||||||
|
// install our interrupt handler
|
||||||
|
mraa_gpio_isr(m_gpio, (mraa_gpio_edge_t) level, isr, arg);
|
||||||
|
m_isrInstalled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTP223::uninstallISR()
|
||||||
|
{
|
||||||
|
mraa_gpio_isr_exit(m_gpio);
|
||||||
|
m_isrInstalled = false;
|
||||||
|
}
|
||||||
|
@ -24,7 +24,11 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <mraa/gpio.h>
|
#include <mraa/gpio.hpp>
|
||||||
|
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
#include "../IsrCallback.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace upm {
|
namespace upm {
|
||||||
/**
|
/**
|
||||||
@ -87,9 +91,32 @@ class TTP223 {
|
|||||||
*/
|
*/
|
||||||
bool isPressed();
|
bool isPressed();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Installs an interrupt service routine (ISR) to be called when
|
||||||
|
* the button is activated or deactivated.
|
||||||
|
*
|
||||||
|
* @param fptr Pointer to a function to be called on interrupt
|
||||||
|
* @param arg Pointer to an object to be supplied as an
|
||||||
|
* argument to the ISR.
|
||||||
|
*/
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
void installISR(mraa::Edge level, IsrCallback *cb);
|
||||||
|
#else
|
||||||
|
void installISR(mraa::Edge level, void (*isr)(void *), void *arg);
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
* Uninstalls the previously installed ISR
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void uninstallISR();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||||
|
void installISR(mraa::Edge level, void (*isr)(void *), void *arg);
|
||||||
|
#endif
|
||||||
std::string m_name; //!< name of this sensor
|
std::string m_name; //!< name of this sensor
|
||||||
mraa_gpio_context m_gpio; //!< GPIO pin
|
mraa_gpio_context m_gpio; //!< GPIO pin
|
||||||
|
bool m_isrInstalled;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user