mirror of
https://github.com/eclipse/upm.git
synced 2025-03-15 04:57:30 +03:00
SWIGJAVA: Remove the last JAVA ifdefs from src
Removed all references to #ifdef SWIGJAVA and JAVACALLBACK from the library source. All java-specific source code has been moved to the corresponding library's .i file for java. * Update library source * Update examples where necessary * The function pointer methodology has been remove from libraries which provided callbacks as both a class and a function pointer implementation. Examples were updated to use the class version of callbacks. * Updated documentation for SWIGJAVA Signed-off-by: Noel Eck <noel.eck@intel.com>
This commit is contained in:
parent
d49ab2ac95
commit
666452e873
@ -257,30 +257,19 @@ __Callbacks in the UPM Java library are implemented as follows (we use the a110x
|
||||
|
||||
We extend the sensor class with another method, _installISR\(jobject runnable\)_, which is a wrapper over the original _installISR\(void \(\*isr\)\(void \*\), void \*arg\)_ method. This will install the _mraa\_java\_isr\_callback\(\)_ method as the interrupt service routine \(ISR\) to be called, with _jobject runnable_ as argument.
|
||||
|
||||
SWIGJAVA is a symbol that is always defined by SWIG when using Java. We enclose the _installISR\(jobject runnable\)_ method in a _\#if defined(SWIGJAVA)_ check, to ensure the code only exists when creating a wrapper for Java.
|
||||
Java callbacks are added at the SWIG interface level. For ease-of-use, a collection of macros are available in src/_upm.i.
|
||||
|
||||
src/a110x/javaupm_a110x.i:
|
||||
```c++
|
||||
#if defined(SWIGJAVA)
|
||||
void A110X::installISR(jobject runnable)
|
||||
{
|
||||
installISR(mraa_java_isr_callback, runnable);
|
||||
}
|
||||
#endif
|
||||
JAVA_ADD_INSTALLISR(upm::A110X)
|
||||
```
|
||||
|
||||
We hide the underlying method, _installISR\(void \(\*isr\)\(void \*\), void \*arg\)_ , and expose only the _installISR\(jobject runnable\)_ to SWIG, through the use of the SWIGJAVA symbol. When SWIGJAVA is defined, we change the access modifier of the underlying method to private.
|
||||
Will expand to the following SWIG wrapper code:
|
||||
|
||||
```c++
|
||||
public:
|
||||
#if defined(SWIGJAVA)
|
||||
void installISR(jobject runnable);
|
||||
#else
|
||||
void installISR(void (*isr)(void *), void *arg);
|
||||
#endif
|
||||
private:
|
||||
#if defined(SWIGJAVA)
|
||||
void installISR(void (*isr)(void *), void *arg);
|
||||
#endif
|
||||
SWIGINTERN void upm_A110X_installISR__SWIG_1(upm::A110X *self,jobject runnable){
|
||||
self->installISR(mraa_java_isr_callback, runnable);
|
||||
}
|
||||
```
|
||||
|
||||
To use callback in java, we create a ISR class, which implements the Java Runnable interface, and we override the _run\(\)_ method with the code to be executed when the interrupt is received. An example for the a110x Hall sensor that increments a counter each time an interrupt is received:
|
||||
@ -311,39 +300,3 @@ class A110XISR implements Runnable {
|
||||
}
|
||||
}
|
||||
```
|
||||
#### Issues with java callbacks and workarounds
|
||||
|
||||
__SWIGJAVA not defined at compile time__
|
||||
|
||||
Consider the following files:
|
||||
* example.h - Header file for our source file
|
||||
* example.cxx - Source file containing the class Example, for which we build java bindings
|
||||
* example.i - The SWIG interface, that includes the example.h header file
|
||||
|
||||
The build process of a java module using SWIG is split into two steps:
|
||||
|
||||
1. Generating the intermediate files, from the SWIG interface file. This will produce the java class file (Example.java), the JNI file (exampleJNI.java) and wrapper file (example_wrap.cxx). The source file (example.cxx) is not needed in the first step.
|
||||
```
|
||||
swig -c++ -java example.i
|
||||
```
|
||||
|
||||
2. Generating the shared library from the C++ sources and wrapper file
|
||||
```
|
||||
g++ -fPIC -c example.cxx example_wrap.cxx -I/usr/lib/jvm/java-1.8.0/include -I/usr/lib/jvm/java-1.8.0/include/linux
|
||||
g++ -shared example_wrap.o sensor.o -o libexample.so
|
||||
```
|
||||
|
||||
SWIGJAVA is always defined when SWIG parses the interface file, meaning it will be defined when it parses the header file (example.h) that is included in the interface file (example.i).
|
||||
SWIG also adds the "#define SWIGJAVA" directive in the wrapper file (example_wrap.cxx).
|
||||
However, in generating the shared library the SWIGJAVA symbol is only defined in the example_wrap.cxx file, because of the added "#define SWIGJAVA" directive. But we have also used the "#if defined(SWIGJAVA)" check in the source file (example.cxx), and thus need to define SWIGJAVA for it too. If we define the SWIGJAVA symbol as a compile flag, when compiling the source code to object code, the SWIGJAVA compile flag and #define SWIGJAVA" directive will clash and give a double definition warning (only a warning).
|
||||
|
||||
In this example it is simple to compile the two source codes separately, one with the compile flag, the other without, and then create the shared library (libexample.so).
|
||||
But in a big automatic build like the java upm libraries, this may prove too hard or too complicated to do. A workaround to this would be to define a custom symbol (e.q. JAVACALLBACK in the upm library) and also test for it. In short, replace:
|
||||
```c++
|
||||
#if defined(SWIGJAVA)
|
||||
```
|
||||
by
|
||||
```c++
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
```
|
||||
|
||||
|
@ -46,22 +46,33 @@ sig_handler(int signo)
|
||||
}
|
||||
|
||||
//! [Interesting]
|
||||
void
|
||||
nrf_handler()
|
||||
class mycb : public virtual Callback
|
||||
{
|
||||
std::cout << "Reciever :: " << *((uint32_t*) &(comm.m_rxBuffer[0])) << std::endl;
|
||||
}
|
||||
public:
|
||||
mycb(upm::NRF24L01 *com) : _com(com) {}
|
||||
virtual void run()
|
||||
{
|
||||
if (_com != NULL)
|
||||
std::cout << "Reciever :: " << *((uint32_t*) &(_com->m_rxBuffer[0])) << std::endl;
|
||||
else
|
||||
std::cout << "Example callback!" << std::endl;
|
||||
}
|
||||
private:
|
||||
upm::NRF24L01* _com;
|
||||
};
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
mycb cb(&comm);
|
||||
|
||||
comm.setSourceAddress((uint8_t*) local_address);
|
||||
comm.setDestinationAddress((uint8_t*) broadcast_address);
|
||||
comm.setPayload(MAX_BUFFER);
|
||||
comm.configure();
|
||||
comm.setSpeedRate(upm::NRF_250KBPS);
|
||||
comm.setChannel(99);
|
||||
comm.setDataReceivedHandler(nrf_handler);
|
||||
comm.setDataReceivedHandler(&cb);
|
||||
|
||||
signal(SIGINT, sig_handler);
|
||||
|
||||
|
@ -46,10 +46,21 @@ sig_handler(int signo)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nrf_handler()
|
||||
class mycb : public virtual Callback
|
||||
{
|
||||
}
|
||||
public:
|
||||
mycb(upm::NRF24L01 *com) : _com(com) {}
|
||||
virtual void run()
|
||||
{
|
||||
if (_com != NULL)
|
||||
std::cout << "Reciever :: " << *((uint32_t*) &(_com->m_rxBuffer[0])) << std::endl;
|
||||
else
|
||||
std::cout << "Example callback!" << std::endl;
|
||||
}
|
||||
private:
|
||||
upm::NRF24L01* _com;
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
@ -57,12 +68,14 @@ main(int argc, char** argv)
|
||||
//! [Interesting]
|
||||
uint32_t dummyData = 0;
|
||||
upm::NRF24L01 comm(7, 8);
|
||||
mycb cb(&comm);
|
||||
|
||||
comm.setSourceAddress((uint8_t*) srcAddress);
|
||||
comm.setDestinationAddress((uint8_t*) destAddress);
|
||||
comm.setPayload(MAX_BUFFER);
|
||||
comm.setChannel(99);
|
||||
comm.configure();
|
||||
comm.setDataReceivedHandler(nrf_handler);
|
||||
comm.setDataReceivedHandler(&cb);
|
||||
|
||||
signal(SIGINT, sig_handler);
|
||||
|
||||
|
@ -42,17 +42,24 @@ sig_handler(int signo)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
handler(clbk_data data)
|
||||
|
||||
//! [Interesting]
|
||||
class mycb : public virtual Callback
|
||||
{
|
||||
printf("callback data (%d)\n", data.is_heart_beat);
|
||||
}
|
||||
public:
|
||||
virtual void run(clbk_data arg)
|
||||
{
|
||||
printf("callback data (%d)\n", arg.is_heart_beat);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
mycb cb;
|
||||
//! [Interesting]
|
||||
Pulsensor sensor(handler);
|
||||
Pulsensor sensor(&cb);
|
||||
|
||||
sensor.start_sampler();
|
||||
while (!doWork) {
|
||||
|
@ -23,12 +23,14 @@
|
||||
*/
|
||||
|
||||
//NOT TESTED!!!
|
||||
|
||||
import java.util.AbstractList;
|
||||
import java.lang.Float;
|
||||
|
||||
public class H3LIS331DLSample {
|
||||
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
//! [Interesting]
|
||||
int[] val;
|
||||
float[] accel;
|
||||
|
||||
// Instantiate an H3LIS331DL on I2C bus 0
|
||||
upm_h3lis331dl.H3LIS331DL sensor = new upm_h3lis331dl.H3LIS331DL(0);
|
||||
@ -39,11 +41,11 @@ public class H3LIS331DLSample {
|
||||
while(true){
|
||||
sensor.update();
|
||||
|
||||
val = sensor.getRawXYZ();
|
||||
System.out.println( "Raw: X: " + val[0] + " Y: " + val[1] + " Z: " + val[2] );
|
||||
upm_h3lis331dl.IntVector val = sensor.getRawXYZ();
|
||||
System.out.println( "Raw: X: " + val.get(0) + " Y: " + val.get(1) + " Z: " + val.get(2) );
|
||||
|
||||
accel = sensor.getAcceleration();
|
||||
System.out.println( "Acceleration: X: " + accel[0] + " Y: " + accel[1] + " Z: " + accel[2] );
|
||||
upm_h3lis331dl.FloatVector accel = sensor.getAcceleration();
|
||||
System.out.println( "Acceleration: X: " + accel.get(0) + " Y: " + accel.get(1) + " Z: " + accel.get(2) );
|
||||
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
@ -28,11 +28,10 @@ public class MMA7455Sample {
|
||||
public static void main(String[] args) throws InterruptedException {
|
||||
// ! [Interesting]
|
||||
upm_mma7455.MMA7455 sensor = new upm_mma7455.MMA7455(0);
|
||||
short[] val;
|
||||
|
||||
while (true) {
|
||||
val = sensor.readData();
|
||||
System.out.println("Accelerometer X: " + val[0] + ", Y: " + val[1] + ", Z: " + val[2]);
|
||||
upm_mma7455.ShortVector val = sensor.readData();
|
||||
System.out.println("Accelerometer X: " + val.get(0) + ", Y: " + val.get(1) + ", Z: " + val.get(2));
|
||||
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
@ -44,13 +44,13 @@ public class MMA7660Sample
|
||||
|
||||
while (true)
|
||||
{
|
||||
float acceleration[] = accel.getAcceleration();
|
||||
upm_mma7660.FloatVector acceleration = accel.getAcceleration();
|
||||
System.out.println("Acceleration: x = "
|
||||
+ acceleration[0]
|
||||
+ acceleration.get(0)
|
||||
+ " y = "
|
||||
+ acceleration[1]
|
||||
+ acceleration.get(1)
|
||||
+ " x = "
|
||||
+ acceleration[2]);
|
||||
+ acceleration.get(2));
|
||||
|
||||
System.out.println();
|
||||
|
||||
|
@ -43,9 +43,8 @@ public class MPU9150Sample {
|
||||
// System.out.println("Gryoscope: " + "GX: " + gyro[0] + " GY: " + gyro[1] + " GZ: "
|
||||
// + gyro[2]);
|
||||
|
||||
float[] magn = sensor.getMagnetometer();
|
||||
System.out.println("Magnetometer: " + "MX: " + magn[0] + " MY: " + magn[1] + " MZ: "
|
||||
+ magn[2]);
|
||||
upm_mpu9150.FloatVector magn = sensor.getMagnetometer();
|
||||
System.out.println("Magnetometer: " + "MX: " + magn.get(0) + " MY: " + magn.get(1) + " MZ: " + magn.get(2));
|
||||
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
|
@ -461,7 +461,7 @@ function(upm_swig_java)
|
||||
${DEPEND_DIRS}
|
||||
)
|
||||
set_target_properties (javaupm_${libname} PROPERTIES
|
||||
COMPILE_FLAGS "-fpermissive -DJAVACALLBACK -DSWIGJAVA"
|
||||
COMPILE_FLAGS "-fpermissive"
|
||||
PREFIX "lib"
|
||||
SUFFIX ".so"
|
||||
)
|
||||
|
@ -77,14 +77,12 @@ void ADXL335::values(int *xVal, int *yVal, int *zVal)
|
||||
*zVal = mraa_aio_read(m_aioZ);
|
||||
}
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
int *ADXL335::values()
|
||||
std::vector<int> ADXL335::values()
|
||||
{
|
||||
int *v = new int[3];
|
||||
std::vector<int> v(3);
|
||||
values(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ADXL335::acceleration(float *xAccel, float *yAccel, float *zAccel)
|
||||
{
|
||||
@ -101,14 +99,12 @@ void ADXL335::acceleration(float *xAccel, float *yAccel, float *zAccel)
|
||||
*zAccel = (zVolts - m_zeroZ) / ADXL335_SENSITIVITY;
|
||||
}
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
float *ADXL335::acceleration()
|
||||
std::vector<float> ADXL335::acceleration()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
acceleration(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
||||
void ADXL335::calibrate()
|
||||
{
|
||||
|
@ -27,6 +27,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mraa/aio.h>
|
||||
|
||||
#define ADXL335_DEFAULT_AREF 5.0
|
||||
@ -106,14 +107,12 @@ namespace upm {
|
||||
*/
|
||||
void values(int *xVal, int *yVal, int *zVal);
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
/**
|
||||
* Gets the analog values for the 3 axes
|
||||
*
|
||||
* @return Array containing value of X, Y, Z axes
|
||||
* @return std::vector of x, y, z analog acceleration values
|
||||
*/
|
||||
int *values();
|
||||
#endif
|
||||
std::vector<int> values();
|
||||
|
||||
/**
|
||||
* Gets the acceleration along all 3 axes
|
||||
@ -124,14 +123,12 @@ namespace upm {
|
||||
*/
|
||||
void acceleration(float *xAccel, float *yAccel, float *zAccel);
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
/**
|
||||
* Gets the acceleration along all 3 axes
|
||||
*
|
||||
* @return Array containing acceleration on X, Y, Z axes
|
||||
* @return std::vector of x, y, z acceleration values
|
||||
*/
|
||||
float *acceleration();
|
||||
#endif
|
||||
std::vector<float> acceleration();
|
||||
|
||||
/**
|
||||
* While the sensor is still, measures the X-axis, Y-axis, and Z-axis
|
||||
|
@ -167,14 +167,12 @@ void BMA220::getAccelerometer(float *x, float *y, float *z)
|
||||
*z = m_accelZ / m_accelScale;
|
||||
}
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
float *BMA220::getAccelerometer()
|
||||
std::vector<float> BMA220::getAccelerometer()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
getAccelerometer(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint8_t BMA220::getChipID()
|
||||
{
|
||||
|
@ -24,6 +24,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mraa/common.hpp>
|
||||
#include <mraa/i2c.hpp>
|
||||
#include <mraa/gpio.hpp>
|
||||
@ -539,14 +540,12 @@ namespace upm {
|
||||
*/
|
||||
void getAccelerometer(float *x, float *y, float *z);
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
/**
|
||||
* get the accelerometer values in gravities
|
||||
*
|
||||
* @return Array containing X, Y, Z acceleration values
|
||||
* @return std::vector containing X, Y, Z acceleration values
|
||||
*/
|
||||
float *getAccelerometer();
|
||||
#endif
|
||||
std::vector<float> getAccelerometer();
|
||||
|
||||
/**
|
||||
* set the filtering configuration
|
||||
|
@ -59,13 +59,6 @@ int Button::value()
|
||||
return mraa_gpio_read(m_gpio);
|
||||
}
|
||||
|
||||
/*#ifdef JAVACALLBACK
|
||||
void Button::installISR(mraa::Edge level, jobject runnable)
|
||||
{
|
||||
installISR(level, mraa_java_isr_callback, runnable);
|
||||
}
|
||||
#endif*/
|
||||
|
||||
void Button::installISR(mraa::Edge level, void (*isr)(void *), void *arg)
|
||||
{
|
||||
if (m_isrInstalled)
|
||||
|
@ -87,11 +87,8 @@ class Button{
|
||||
* @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, jobject runnable);
|
||||
#else*/
|
||||
void installISR(mraa::Edge level, void (*isr)(void *), void *arg);
|
||||
//#endif
|
||||
|
||||
/**
|
||||
* Uninstalls the previously installed ISR
|
||||
*
|
||||
|
@ -31,5 +31,3 @@
|
||||
$1 = reinterpret_cast< uint16_t * >(argp);
|
||||
}
|
||||
#endif
|
||||
|
||||
//#elsif (SWIGJAVA)
|
||||
|
@ -52,5 +52,3 @@
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//#elsif (SWIGJAVA)
|
||||
|
@ -31,5 +31,3 @@
|
||||
$1 = reinterpret_cast< uint8_t * >(argp);
|
||||
}
|
||||
#endif
|
||||
|
||||
//#elsif (SWIGJAVA)
|
||||
|
@ -58,13 +58,6 @@ int GroveButton::value()
|
||||
return mraa_gpio_read(m_gpio);
|
||||
}
|
||||
|
||||
/*#ifdef JAVACALLBACK
|
||||
void GroveButton::installISR(mraa::Edge level, jobject runnable)
|
||||
{
|
||||
installISR(level, mraa_java_isr_callback, runnable);
|
||||
}
|
||||
#endif*/
|
||||
|
||||
void GroveButton::installISR(mraa::Edge level, void (*isr)(void *), void *arg)
|
||||
{
|
||||
if (m_isrInstalled)
|
||||
|
@ -84,11 +84,8 @@ class GroveButton: public Grove {
|
||||
* @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, jobject runnable);
|
||||
//#else
|
||||
void installISR(mraa::Edge level, void (*isr)(void *), void *arg);
|
||||
//#endif
|
||||
|
||||
/**
|
||||
* Uninstalls the previously installed ISR
|
||||
*
|
||||
|
@ -600,25 +600,23 @@ void H3LIS331DL::getXYZ(int *x, int *y, int*z)
|
||||
*z = (m_rawZ - m_adjZ);
|
||||
}
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
float *H3LIS331DL::getAcceleration()
|
||||
std::vector<float> H3LIS331DL::getAcceleration()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
getAcceleration(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
|
||||
int *H3LIS331DL::getRawXYZ()
|
||||
std::vector<int> H3LIS331DL::getRawXYZ()
|
||||
{
|
||||
int *v = new int[3];
|
||||
std::vector<int> v(3);
|
||||
getRawXYZ(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
|
||||
int *H3LIS331DL::getXYZ()
|
||||
std::vector<int> H3LIS331DL::getXYZ()
|
||||
{
|
||||
int *v = new int[3];
|
||||
std::vector<int> v(3);
|
||||
getXYZ(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
@ -24,6 +24,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mraa/common.hpp>
|
||||
#include <mraa/i2c.hpp>
|
||||
|
||||
@ -594,29 +595,26 @@ namespace upm {
|
||||
*/
|
||||
void getXYZ(int *x, int *y, int *z);
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
/**
|
||||
* Gets acceleration values for each of the axes
|
||||
*
|
||||
* @return Array containing X, Y, Z acceleration values
|
||||
* @return std::vector containing X, Y, Z acceleration values
|
||||
*/
|
||||
float *getAcceleration();
|
||||
std::vector<float> getAcceleration();
|
||||
|
||||
/**
|
||||
* Gets raw axis values
|
||||
*
|
||||
* @return Array containing X, Y, Z raw values
|
||||
* @return std::vector containing X, Y, Z raw values
|
||||
*/
|
||||
int *getRawXYZ();
|
||||
std::vector<int> getRawXYZ();
|
||||
|
||||
/**
|
||||
* Gets adjusted axis values
|
||||
*
|
||||
* @return Array containing X, Y, Z adjusted axis values
|
||||
* @return std::vector containing X, Y, Z adjusted axis values
|
||||
*/
|
||||
int *getXYZ();
|
||||
#endif
|
||||
|
||||
std::vector<int> getXYZ();
|
||||
|
||||
/**
|
||||
* Provides public access to the MRAA I2C context of the class for
|
||||
|
@ -2,6 +2,10 @@
|
||||
%include "../upm.i"
|
||||
%include "cpointer.i"
|
||||
%include "typemaps.i"
|
||||
%include "std_vector.i"
|
||||
|
||||
%template(IntVector) std::vector<int>;
|
||||
%template(FloatVector) std::vector<float>;
|
||||
|
||||
%apply int *OUTPUT { int *x, int *y, int*z };
|
||||
%apply float *OUTPUT { float *aX, float *aY, float *aZ };
|
||||
@ -9,45 +13,8 @@
|
||||
%ignore i2cContext;
|
||||
|
||||
%{
|
||||
#include "h3lis331dl.hpp"
|
||||
#include "h3lis331dl.hpp"
|
||||
%}
|
||||
|
||||
%typemap(jni) float* "jfloatArray"
|
||||
%typemap(jstype) float* "float[]"
|
||||
%typemap(jtype) float* "float[]"
|
||||
|
||||
%typemap(javaout) float* {
|
||||
return $jnicall;
|
||||
}
|
||||
|
||||
%typemap(out) float *getAcceleration {
|
||||
$result = JCALL1(NewFloatArray, jenv, 3);
|
||||
JCALL4(SetFloatArrayRegion, jenv, $result, 0, 3, $1);
|
||||
delete [] $1;
|
||||
}
|
||||
|
||||
%typemap(jni) int* "jintArray"
|
||||
%typemap(jstype) int* "int[]"
|
||||
%typemap(jtype) int* "int[]"
|
||||
|
||||
%typemap(javaout) int* {
|
||||
return $jnicall;
|
||||
}
|
||||
|
||||
%typemap(out) int *getRawXYZ {
|
||||
$result = JCALL1(NewIntArray, jenv, 3);
|
||||
JCALL4(SetIntArrayRegion, jenv, $result, 0, 3, (const int*)$1);
|
||||
}
|
||||
|
||||
%typemap(out) int *getXYZ {
|
||||
$result = JCALL1(NewIntArray, jenv, 3);
|
||||
JCALL4(SetIntArrayRegion, jenv, $result, 0, 3, (const int*)$1);
|
||||
}
|
||||
|
||||
%ignore getRawXYZ(int *, int *, int *);
|
||||
%ignore getXYZ(int *, int *, int *);
|
||||
%ignore getAcceleration(float *, float *, float *);
|
||||
|
||||
%include "h3lis331dl.hpp"
|
||||
|
||||
JAVA_JNI_LOADLIBRARY(javaupm_h3lis331dl)
|
@ -26,6 +26,7 @@
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <string.h>
|
||||
#include <vector>
|
||||
|
||||
#include "lsm9ds0.hpp"
|
||||
|
||||
@ -621,28 +622,26 @@ void LSM9DS0::getMagnetometer(float *x, float *y, float *z)
|
||||
*z = (m_magZ * m_magScale) / 1000.0;
|
||||
}
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
float *LSM9DS0::getAccelerometer()
|
||||
std::vector<float> LSM9DS0::getAccelerometer()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
getAccelerometer(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
|
||||
float *LSM9DS0::getGyroscope()
|
||||
std::vector<float> LSM9DS0::getGyroscope()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
getGyroscope(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
|
||||
float *LSM9DS0::getMagnetometer()
|
||||
std::vector<float> LSM9DS0::getMagnetometer()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
getMagnetometer(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
||||
float LSM9DS0::getTemperature()
|
||||
{
|
||||
|
@ -24,6 +24,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mraa/common.hpp>
|
||||
#include <mraa/i2c.hpp>
|
||||
|
||||
@ -1266,28 +1267,26 @@ namespace upm {
|
||||
*/
|
||||
void getMagnetometer(float *x, float *y, float *z);
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
/**
|
||||
* get the accelerometer values in gravities
|
||||
*
|
||||
* @return Array containing X, Y, Z acceleration values
|
||||
* @return std::vector containing X, Y, Z acceleration values
|
||||
*/
|
||||
float *getAccelerometer();
|
||||
std::vector<float> getAccelerometer();
|
||||
|
||||
/**
|
||||
* get the gyroscope values in degrees per second
|
||||
*
|
||||
* @return Array containing X, Y, Z gyroscope values
|
||||
* @return std::vector containing X, Y, Z gyroscope values
|
||||
*/
|
||||
float *getGyroscope();
|
||||
std::vector<float> getGyroscope();
|
||||
|
||||
/**
|
||||
* get the magnetometer values in gauss
|
||||
*
|
||||
* @return Array containing X, Y, Z magnetometer values
|
||||
* @return std::vector containing X, Y, Z magnetometer values
|
||||
*/
|
||||
float *getMagnetometer();
|
||||
#endif
|
||||
std::vector<float> getMagnetometer();
|
||||
|
||||
/**
|
||||
* get the temperature value. Unfortunately the datasheet does
|
||||
|
@ -3,29 +3,15 @@
|
||||
%include "typemaps.i"
|
||||
%include "arrays_java.i";
|
||||
%include "../java_buffer.i"
|
||||
%include "std_vector.i"
|
||||
|
||||
%template(ShortVector) std::vector<short>;
|
||||
|
||||
%apply short *OUTPUT { short * ptrX, short * ptrY, short * ptrZ };
|
||||
|
||||
%typemap(jni) short* "jshortArray"
|
||||
%typemap(jstype) short* "short[]"
|
||||
%typemap(jtype) short* "short[]"
|
||||
|
||||
%typemap(javaout) short* {
|
||||
return $jnicall;
|
||||
}
|
||||
|
||||
%typemap(out) short *readData {
|
||||
$result = JCALL1(NewShortArray, jenv, 3);
|
||||
JCALL4(SetShortArrayRegion, jenv, $result, 0, 3, (const signed short*)$1);
|
||||
delete [] $1;
|
||||
}
|
||||
|
||||
%ignore readData(short *, short *, short *);
|
||||
|
||||
%{
|
||||
#include "mma7455.hpp"
|
||||
#include "mma7455.hpp"
|
||||
%}
|
||||
|
||||
%include "mma7455.hpp"
|
||||
|
||||
JAVA_JNI_LOADLIBRARY(javaupm_mma7455)
|
@ -26,6 +26,7 @@
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include <unistd.h>
|
||||
#include <vector>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
@ -133,13 +134,11 @@ MMA7455::readData (short * ptrX, short * ptrY, short * ptrZ) {
|
||||
return mraa::SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
short *MMA7455::readData() {
|
||||
short *v = new short[3];
|
||||
std::vector<short> MMA7455::readData() {
|
||||
std::vector<short> v(3);
|
||||
readData(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
MMA7455::i2cReadReg (unsigned char reg, uint8_t *buffer, int len) {
|
||||
|
@ -24,6 +24,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <mraa/i2c.hpp>
|
||||
|
||||
#define ADDR 0x1D // device address
|
||||
@ -208,14 +209,13 @@ class MMA7455 {
|
||||
*/
|
||||
mraa::Result readData (short * ptrX, short * ptrY, short * ptrZ);
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
/**
|
||||
* Reads X-axis, Y-axis, and Z-axis acceleration data
|
||||
*
|
||||
* @return Array containing X, Y, Z acceleration data
|
||||
* @return std::vector containing X, Y, Z acceleration data
|
||||
*/
|
||||
short *readData ();
|
||||
#endif
|
||||
std::vector<short> readData ();
|
||||
|
||||
/**
|
||||
* Internal function for reading I2C data
|
||||
*
|
||||
|
@ -4,44 +4,17 @@
|
||||
%include "typemaps.i"
|
||||
%include "arrays_java.i";
|
||||
%include "../java_buffer.i"
|
||||
%include "std_vector.i"
|
||||
|
||||
%template(IntVector) std::vector<int>;
|
||||
%template(FloatVector) std::vector<float>;
|
||||
|
||||
%apply int *OUTPUT { int *x, int *y, int *z };
|
||||
%apply float *OUTPUT { float *ax, float *ay, float *az };
|
||||
|
||||
%typemap(jni) float* "jfloatArray"
|
||||
%typemap(jstype) float* "float[]"
|
||||
%typemap(jtype) float* "float[]"
|
||||
|
||||
%typemap(javaout) float* {
|
||||
return $jnicall;
|
||||
}
|
||||
|
||||
%typemap(out) float *getAcceleration {
|
||||
$result = JCALL1(NewFloatArray, jenv, 3);
|
||||
JCALL4(SetFloatArrayRegion, jenv, $result, 0, 3, $1);
|
||||
}
|
||||
|
||||
|
||||
%typemap(jni) int* "jintArray"
|
||||
%typemap(jstype) int* "int[]"
|
||||
%typemap(jtype) int* "int[]"
|
||||
|
||||
%typemap(javaout) int* {
|
||||
return $jnicall;
|
||||
}
|
||||
|
||||
%typemap(out) int *getRawValues {
|
||||
$result = JCALL1(NewIntArray, jenv, 3);
|
||||
JCALL4(SetIntArrayRegion, jenv, $result, 0, 3, (const signed int*)$1);
|
||||
}
|
||||
|
||||
|
||||
%ignore getRawValues(int *, int *, int *);
|
||||
%ignore getAcceleration(float *, float *, float *);
|
||||
|
||||
%{
|
||||
#include "mma7660.hpp"
|
||||
#include "mma7660_regs.h"
|
||||
#include "mma7660.hpp"
|
||||
#include "mma7660_regs.h"
|
||||
%}
|
||||
%include "mma7660_regs.h"
|
||||
%include "mma7660.hpp"
|
||||
|
@ -23,7 +23,9 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <mma7660.h>
|
||||
#include <vector>
|
||||
|
||||
#include "mma7660.h"
|
||||
|
||||
namespace upm {
|
||||
|
||||
@ -197,17 +199,16 @@ namespace upm {
|
||||
*/
|
||||
bool setSampleRate(MMA7660_AUTOSLEEP_T sr);
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
/**
|
||||
* Reads the current acceleration values. The returned memory
|
||||
* is statically allocated and will be overwritten on each
|
||||
* call.
|
||||
*
|
||||
* @return Array containing x, y, z.
|
||||
* @return std::vector containing x, y, z.
|
||||
*/
|
||||
float *getAcceleration()
|
||||
std::vector<float> getAcceleration()
|
||||
{
|
||||
static float values[3];
|
||||
std::vector<float> values(3);
|
||||
getAcceleration(&values[0], &values[1], &values[2]);
|
||||
return values;
|
||||
}
|
||||
@ -217,15 +218,15 @@ namespace upm {
|
||||
* is statically allocated and will be overwritten on each
|
||||
* call.
|
||||
*
|
||||
* @return Array containing x, y, z.
|
||||
* @return std::vector containing x, y, z.
|
||||
*/
|
||||
int *getRawValues()
|
||||
std::vector<int> getRawValues()
|
||||
{
|
||||
static int values[3];
|
||||
std::vector<int> values(3);
|
||||
getRawValues(&values[0], &values[1], &values[2]);
|
||||
return values;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Installs an interrupt service routine (ISR) to be called when
|
||||
* an interrupt occurs
|
||||
|
@ -3,40 +3,22 @@
|
||||
%include "typemaps.i"
|
||||
%include "arrays_java.i"
|
||||
%include "../java_buffer.i"
|
||||
%include "std_vector.i"
|
||||
|
||||
%template(FloatVector) std::vector<float>;
|
||||
|
||||
%apply int {mraa::Edge};
|
||||
|
||||
%{
|
||||
#include "mpu60x0.hpp"
|
||||
#include "mpu9150.hpp"
|
||||
#include "mpu60x0.hpp"
|
||||
#include "mpu9150.hpp"
|
||||
%}
|
||||
|
||||
|
||||
%typemap(jni) float * "jfloatArray"
|
||||
%typemap(jstype) float * "float[]"
|
||||
%typemap(jtype) float * "float[]"
|
||||
|
||||
%typemap(javaout) float * {
|
||||
return $jnicall;
|
||||
}
|
||||
|
||||
%typemap(out) float * {
|
||||
$result = JCALL1(NewFloatArray, jenv, 3);
|
||||
JCALL4(SetFloatArrayRegion, jenv, $result, 0, 3, $1);
|
||||
delete [] $1;
|
||||
}
|
||||
|
||||
%ignore getAccelerometer(float *, float *, float *);
|
||||
%ignore getGyroscope(float *, float *, float *);
|
||||
%ignore getMagnetometer(float *, float *, float *);
|
||||
|
||||
%include "mpu60x0.hpp"
|
||||
%include "mpu9150.hpp"
|
||||
|
||||
%ignore installISR(int , mraa::Edge , void *, void *);
|
||||
|
||||
%define GETTER get_gpioIRQ()
|
||||
%enddef
|
||||
|
||||
JAVA_ADD_INSTALLISR_GPIO(upm::MPU60X0)
|
||||
|
||||
JAVA_JNI_LOADLIBRARY(javaupm_mpu9150)
|
||||
|
@ -109,11 +109,9 @@ void MPU9150::getMagnetometer(float *x, float *y, float *z)
|
||||
*z = mz;
|
||||
}
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
float *MPU9150::getMagnetometer()
|
||||
std::vector<float> MPU9150::getMagnetometer()
|
||||
{
|
||||
float *v = new float[3];
|
||||
std::vector<float> v(3);
|
||||
getMagnetometer(&v[0], &v[1], &v[2]);
|
||||
return v;
|
||||
}
|
||||
#endif
|
||||
|
@ -23,6 +23,7 @@
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
#include <vector>
|
||||
|
||||
#include "mpu60x0.hpp"
|
||||
#include "ak8975.hpp"
|
||||
@ -108,17 +109,13 @@ namespace upm {
|
||||
*/
|
||||
void getMagnetometer(float *x, float *y, float *z);
|
||||
|
||||
#ifdef SWIGJAVA
|
||||
/**
|
||||
* Return the compensated values for the x, y, and z axes. The
|
||||
* unit of measurement is in micro-teslas (uT).
|
||||
*
|
||||
* @return Array containing X, Y, Z magnetometer values
|
||||
* @return std::vector containing X, Y, Z magnetometer values
|
||||
*/
|
||||
float *getMagnetometer();
|
||||
#endif
|
||||
|
||||
|
||||
std::vector<float> getMagnetometer();
|
||||
|
||||
protected:
|
||||
// magnetometer instance
|
||||
|
@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
class Callback
|
||||
{
|
||||
public:
|
||||
@ -13,10 +12,9 @@ class Callback
|
||||
};
|
||||
|
||||
|
||||
static void generic_callback (Callback* callback)
|
||||
void generic_callback (Callback* callback)
|
||||
{
|
||||
if (callback == NULL)
|
||||
return;
|
||||
callback->run();
|
||||
}
|
||||
#endif
|
||||
|
@ -134,20 +134,12 @@ NRF24L01::setPayload (uint8_t payload) {
|
||||
m_payload = payload;
|
||||
}
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
void
|
||||
NRF24L01::setDataReceivedHandler (Callback *call_obj)
|
||||
{
|
||||
callback_obj = call_obj;
|
||||
dataReceivedHandler = &generic_callback;
|
||||
}
|
||||
#else
|
||||
void
|
||||
NRF24L01::setDataReceivedHandler (funcPtrVoidVoid handler)
|
||||
{
|
||||
dataReceivedHandler = handler;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
NRF24L01::dataReady () {
|
||||
@ -316,11 +308,8 @@ void
|
||||
NRF24L01::pollListener() {
|
||||
if (dataReady()) {
|
||||
getData (m_rxBuffer);
|
||||
#ifdef JAVACALLBACK
|
||||
|
||||
dataReceivedHandler (callback_obj); /* let know that data arrived */
|
||||
#else
|
||||
dataReceivedHandler (); /* let know that data arrived */
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,9 +33,7 @@
|
||||
#include <mraa/spi.hpp>
|
||||
#include <cstring>
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
#include "Callback.hpp"
|
||||
#endif
|
||||
|
||||
/* Memory Map */
|
||||
#define CONFIG 0x00
|
||||
@ -142,11 +140,7 @@
|
||||
|
||||
namespace upm {
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
typedef void (* funcPtrVoidVoid) (Callback *);
|
||||
#else
|
||||
typedef void (* funcPtrVoidVoid) ();
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
NRF_250KBPS = 0,
|
||||
@ -257,21 +251,13 @@ class NRF24L01 {
|
||||
*/
|
||||
void setPayload (uint8_t load);
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
/**
|
||||
* Sets the handler to be called when data has been
|
||||
* received
|
||||
* @param call_obj Object used for callback - Java
|
||||
*/
|
||||
void setDataReceivedHandler (Callback *call_obj);
|
||||
#else
|
||||
/**
|
||||
* Sets the handler to be called when data has been
|
||||
* received
|
||||
* @param handler Handler used for callback
|
||||
*/
|
||||
void setDataReceivedHandler (funcPtrVoidVoid handler);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Checks if the data has arrived
|
||||
*/
|
||||
@ -374,11 +360,12 @@ class NRF24L01 {
|
||||
uint8_t m_bleBuffer [32]; /**< BLE buffer */
|
||||
|
||||
private:
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
/**< Callback object to use for setting the handler from Java */
|
||||
|
||||
/* Callback object to use for setting the handler from Java */
|
||||
Callback *callback_obj;
|
||||
#endif
|
||||
funcPtrVoidVoid dataReceivedHandler; /**< Data arrived handler */
|
||||
|
||||
/** Data arrived handler */
|
||||
funcPtrVoidVoid dataReceivedHandler;
|
||||
|
||||
/**
|
||||
* Writes bytes to an SPI device
|
||||
|
@ -32,10 +32,6 @@
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
#undef JAVACALLBACK
|
||||
#endif
|
||||
|
||||
#include "pn532.hpp"
|
||||
|
||||
using namespace upm;
|
||||
|
@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
class Callback
|
||||
{
|
||||
public:
|
||||
@ -11,5 +10,3 @@ class Callback
|
||||
{ /* empty, overloaded in Java*/
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -32,7 +32,6 @@
|
||||
|
||||
using namespace upm;
|
||||
|
||||
#if defined(JAVACALLBACK)
|
||||
Pulsensor::Pulsensor (Callback *obj_call) : pin_ctx(0)
|
||||
{
|
||||
obj_callback = obj_call;
|
||||
@ -49,24 +48,6 @@ Pulsensor::Pulsensor (Callback *obj_call) : pin_ctx(0)
|
||||
qs = FALSE;
|
||||
apmlitude = 100;
|
||||
}
|
||||
#else
|
||||
Pulsensor::Pulsensor (callback_handler handler) : pin_ctx(0)
|
||||
{
|
||||
callback = handler;
|
||||
|
||||
sample_counter = 0;
|
||||
last_beat_time = 0;
|
||||
threshold = 512;
|
||||
ibi = 600;
|
||||
trough = 512;
|
||||
peak = 512;
|
||||
is_pulse = FALSE;
|
||||
ret = FALSE;
|
||||
bpm = 0;
|
||||
qs = FALSE;
|
||||
apmlitude = 100;
|
||||
}
|
||||
#endif
|
||||
|
||||
void Pulsensor::start_sampler ()
|
||||
{
|
||||
@ -114,11 +95,8 @@ void *Pulsensor::do_sample (void *arg) {
|
||||
(pulsensor->is_pulse == FALSE) &&
|
||||
(N > (pulsensor->ibi / 5)* 3) ) {
|
||||
pulsensor->is_pulse = callback_data.is_heart_beat = TRUE;
|
||||
#if defined(JAVACALLBACK)
|
||||
|
||||
pulsensor->obj_callback->run(callback_data);
|
||||
#else
|
||||
pulsensor->callback(callback_data);
|
||||
#endif
|
||||
|
||||
pulsensor->ibi = pulsensor->sample_counter - pulsensor->last_beat_time;
|
||||
pulsensor->last_beat_time = pulsensor->sample_counter;
|
||||
@ -156,11 +134,9 @@ void *Pulsensor::do_sample (void *arg) {
|
||||
if (data_from_sensor < pulsensor->threshold &&
|
||||
pulsensor->is_pulse == TRUE) {
|
||||
pulsensor->is_pulse = callback_data.is_heart_beat = FALSE;
|
||||
#if defined(JAVACALLBACK)
|
||||
|
||||
pulsensor->obj_callback->run(callback_data);
|
||||
#else
|
||||
pulsensor->callback(callback_data);
|
||||
#endif
|
||||
|
||||
pulsensor->is_pulse = FALSE;
|
||||
pulsensor->apmlitude = pulsensor->peak - pulsensor->trough;
|
||||
pulsensor->threshold = pulsensor->apmlitude / 2 + pulsensor->trough;
|
||||
|
@ -47,11 +47,7 @@ struct clbk_data {
|
||||
int is_heart_beat; /**< heartbeat check */
|
||||
};
|
||||
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
#include "Callback.hpp"
|
||||
#else
|
||||
typedef void (* callback_handler) (clbk_data);
|
||||
#endif
|
||||
|
||||
namespace upm {
|
||||
/**
|
||||
@ -80,11 +76,8 @@ namespace upm {
|
||||
class Pulsensor {
|
||||
|
||||
public:
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
Pulsensor(Callback *callback);
|
||||
#else
|
||||
Pulsensor(callback_handler handler);
|
||||
#endif
|
||||
|
||||
void start_sampler();
|
||||
void stop_sampler();
|
||||
|
||||
@ -106,11 +99,8 @@ private:
|
||||
uint8_t second_beat; /**< Second heartbeat */
|
||||
uint8_t ret; /**< Return value */
|
||||
mraa::Aio pin_ctx; /**< The pin context */
|
||||
#if defined(SWIGJAVA) || defined(JAVACALLBACK)
|
||||
|
||||
Callback *obj_callback; /**< The callback object */
|
||||
#else
|
||||
callback_handler callback; /**< The callback function */
|
||||
#endif
|
||||
volatile uint16_t ctx_counter;
|
||||
};
|
||||
}
|
||||
|
@ -24,9 +24,6 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
#undef JAVACALLBACK
|
||||
#endif
|
||||
#include "rgbringcoder.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
@ -29,10 +29,6 @@
|
||||
#include <string>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
#undef JAVACALLBACK
|
||||
#endif
|
||||
|
||||
#include "sx1276.hpp"
|
||||
|
||||
using namespace upm;
|
||||
|
23
src/upm.i
23
src/upm.i
@ -2,6 +2,7 @@
|
||||
%include "stdint.i"
|
||||
%include "upm_exception.i"
|
||||
|
||||
/* Import additional SWIG helps (not exposed in wrapper) */
|
||||
%import _upm.i
|
||||
|
||||
%{
|
||||
@ -16,19 +17,21 @@
|
||||
|
||||
#if (SWIG_JAVASCRIPT_V8)
|
||||
%{
|
||||
// Because there's no guarantee that v8 will ever call garbage collection,
|
||||
// we're adding a function that will allow a user to call it manually
|
||||
void cleanUp()
|
||||
{
|
||||
// Call the v8 garbage collector as long as there is memory to clean up
|
||||
// See https://codereview.chromium.org/412163003 for this API change
|
||||
/* Because there's no guarantee that v8 will ever call garbage collection,
|
||||
* we're adding a function that will allow a user to call it manually
|
||||
*/
|
||||
void cleanUp()
|
||||
{
|
||||
/* Call the v8 garbage collector as long as there is memory to clean up
|
||||
* See https://codereview.chromium.org/412163003 for this API change
|
||||
*/
|
||||
#if (SWIG_V8_VERSION < 0x032838)
|
||||
while (!v8::V8::IdleNotification())
|
||||
while (!v8::V8::IdleNotification())
|
||||
#else
|
||||
while (!v8::Isolate::GetCurrent()->IdleNotification(1000))
|
||||
while (!v8::Isolate::GetCurrent()->IdleNotification(1000))
|
||||
#endif
|
||||
{;}
|
||||
}
|
||||
{;}
|
||||
}
|
||||
%}
|
||||
void cleanUp();
|
||||
#endif
|
||||
|
@ -24,9 +24,6 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#ifdef JAVACALLBACK
|
||||
#undef JAVACALLBACK
|
||||
#endif
|
||||
#include "wheelencoder.hpp"
|
||||
|
||||
using namespace upm;
|
||||
|
Loading…
x
Reference in New Issue
Block a user