Private
Public Access
2
0

java: Migrate IsrCallbacks to Java's Runnable class

Signed-off-by: Petre Eftime <petre.p.eftime@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Petre Eftime
2015-12-16 16:56:38 +02:00
committed by Brendan Le Foll
parent 78a4d12a37
commit c63e38a57e
9 changed files with 104 additions and 37 deletions

View File

@@ -44,6 +44,12 @@ extern "C" {
#include <Python.h>
#endif
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
#include <jni.h>
extern JavaVM *globVM;
extern void mraa_java_isr_callback(void *);
#endif
#include <stdio.h>
#include <pthread.h>

View File

@@ -69,30 +69,6 @@ typedef enum {
EDGE_FALLING = 3 /**< Interupt on falling only */
} Edge;
#if defined(SWIGJAVA)
class IsrCallback
{
friend class Gpio;
public:
virtual ~IsrCallback()
{
}
virtual void
run()
{ /* empty, overloaded in Java*/
}
protected:
static void
generic_isr_callback(void* data)
{
IsrCallback* callback = (IsrCallback*) data;
callback->run();
}
};
#endif
/**
* @brief API to General Purpose IO
*
@@ -196,13 +172,13 @@ class Gpio
#endif
return (Result) mraa_gpio_isr(m_gpio, (mraa_gpio_edge_t) mode, &uvwork, this);
}
#elif defined(SWIGJAVA)
#elif defined(SWIGJAVA) || defined(JAVACALLBACK)
Result
isr(Edge mode, IsrCallback* cb)
isr(Edge mode, jobject runnable)
{
return (Result) mraa_gpio_isr(m_gpio, (mraa_gpio_edge_t) mode, &IsrCallback::generic_isr_callback, cb);
return (Result) mraa_gpio_isr(m_gpio, (mraa_gpio_edge_t) mode, mraa_java_isr_callback, runnable);
}
#else
#endif
/**
* Sets a callback to be called when pin value changes
*
@@ -217,7 +193,7 @@ class Gpio
{
return (Result) mraa_gpio_isr(m_gpio, (mraa_gpio_edge_t) mode, fptr, args);
}
#endif
/**
* Exits callback - this call will not kill the isr thread immediatly
* but only when it is out of it's critical section