diff --git a/src/_upm.i b/src/_upm.i index 99087d94..7686e018 100644 --- a/src/_upm.i +++ b/src/_upm.i @@ -10,6 +10,56 @@ } %enddef +/* Define GETTER in the appropiate .i file with the getter function name +*/ +%define JAVA_ADD_INSTALLISR_GPIO(UPM_Classname) +%extend UPM_Classname { + void installISR(int gpio, mraa::Edge level, jobject runnable) + { + // delete any existing ISR and GPIO context + $self->uninstallISR(); + + // create gpio context + mraa::Gpio* swg_gpioIntr = $self->GETTER; + + swg_gpioIntr->dir(mraa::DIR_IN); + swg_gpioIntr->isr(level, runnable); + + } +} +%enddef + +/* Define INTERRUPT in the appropiate .i file with the interrupt type +*/ +%define JAVA_ADD_INSTALLISR_INTERRUPT(UPM_Classname) +%extend UPM_Classname { + void installISR(INTERRUPT intr, int gpio, + mraa::Edge level, jobject runnable) + { + $self->installISR(intr, gpio, level, mraa_java_isr_callback, runnable); + } +} +%enddef + +%define JAVA_ADD_INSTALLISR_EDGE(UPM_Classname) +%extend UPM_Classname { + void installISR(mraa::Edge level, jobject runnable) + { + $self->installISR(level, mraa_java_isr_callback, runnable); + } +} +%enddef + +%define JAVA_ADD_INSTALLISR_PIN(UPM_Classname) +%extend UPM_Classname { + void installISR(int pin, jobject runnable) + { + $self->installISR(pin, mraa_java_isr_callback, runnable); + } + +} +%enddef + /* Macro for adding JNI loadLibrary dependency usage: JAVA_JNI_LOADLIBRARY(javaupm_rhusb) */ diff --git a/src/bma220/javaupm_bma220.i b/src/bma220/javaupm_bma220.i index b960be80..24bcd47f 100644 --- a/src/bma220/javaupm_bma220.i +++ b/src/bma220/javaupm_bma220.i @@ -30,21 +30,9 @@ %include "bma220.hpp" -%extend upm::BMA220 { - void installISR(int gpio, mraa::Edge level, jobject runnable) - { - // delete any existing ISR and GPIO context - $self->uninstallISR(); - - // create gpio context - mraa::Gpio* swg_gpioIntr = $self->get_gpioIntr(); - - swg_gpioIntr->dir(mraa::DIR_IN); - swg_gpioIntr->isr(level, runnable); - - } - -} +%define GETTER get_gpioIntr(); +%enddef +JAVA_ADD_INSTALLISR_GPIO(upm::BMA220) %ignore installISR(int, mraa::Edge, void *, void *); diff --git a/src/bma250e/javaupm_bma250e.i b/src/bma250e/javaupm_bma250e.i index 7a782dcb..d31bc803 100644 --- a/src/bma250e/javaupm_bma250e.i +++ b/src/bma250e/javaupm_bma250e.i @@ -30,14 +30,9 @@ import java.lang.Float; %ignore installISR (BMA250E_INTERRUPT_PINS_T, int, mraa::Edge , void *, void *); -%extend upm::BMA250E { - void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, runnable); - } -} - +%define INTERRUPT BMA250E_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::BMA250E) JAVA_JNI_LOADLIBRARY(javaupm_bma250e) diff --git a/src/bmg160/javaupm_bmg160.i b/src/bmg160/javaupm_bmg160.i index 739e059e..f1d49274 100644 --- a/src/bmg160/javaupm_bmg160.i +++ b/src/bmg160/javaupm_bmg160.i @@ -30,12 +30,8 @@ import java.lang.Float; %ignore installISR (BMG160_INTERRUPT_PINS_T , int mraa::Edge , void *, void *); -%extend upm::BMG160 { - void installISR(BMG160_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, runnable); - } -} +%define INTERRUPT BMG160_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::BMG160) JAVA_JNI_LOADLIBRARY(javaupm_bmg160) diff --git a/src/bmm150/javaupm_bmm150.i b/src/bmm150/javaupm_bmm150.i index 37bc4664..14ec636a 100644 --- a/src/bmm150/javaupm_bmm150.i +++ b/src/bmm150/javaupm_bmm150.i @@ -29,13 +29,8 @@ import java.lang.Float; %ignore installISR (BMM150_INTERRUPT_PINS_T , int , mraa::Edge , void *, void *); -%extend upm::BMM150 { - void installISR(BMM150_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, runnable); - } -} +%define INTERRUPT BMM150_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::BMM150) JAVA_JNI_LOADLIBRARY(javaupm_bmm150) diff --git a/src/button/javaupm_button.i b/src/button/javaupm_button.i index 273d5282..1812e2cf 100644 --- a/src/button/javaupm_button.i +++ b/src/button/javaupm_button.i @@ -11,11 +11,6 @@ #%ignore -%extend upm::Button { - void installISR(mraa::Edge level, jobject runnable) - { - $self->installISR(level, mraa_java_isr_callback, runnable); - } -} +JAVA_ADD_INSTALLISR_EDGE(upm::Button) JAVA_JNI_LOADLIBRARY(javaupm_button) diff --git a/src/grove/javaupm_grove.i b/src/grove/javaupm_grove.i index 4c8f5840..724ccdb1 100644 --- a/src/grove/javaupm_grove.i +++ b/src/grove/javaupm_grove.i @@ -49,12 +49,8 @@ #include "grovetemp.hpp" %} -%extend upm::GroveButton { - void installISR(mraa::Edge level, jobject runnable) - { - $self->installISR(level, mraa_java_isr_callback, runnable); - } -} +JAVA_ADD_INSTALLISR_EDGE(upm::GroveButton) + JAVA_JNI_LOADLIBRARY(javaupm_grove) diff --git a/src/interfaces/javaupm_interfaces.i b/src/interfaces/javaupm_interfaces.i index 59564d1a..3aab09ab 100644 --- a/src/interfaces/javaupm_interfaces.i +++ b/src/interfaces/javaupm_interfaces.i @@ -9,5 +9,5 @@ %include javaupm_iPressureSensor.i %include javaupm_iTemperatureSensor.i - +%include _upm.i JAVA_JNI_LOADLIBRARY(javaupm_interfaces) diff --git a/src/lis2ds12/javaupm_lis2ds12.i b/src/lis2ds12/javaupm_lis2ds12.i index 7d99d0b1..be636f0e 100644 --- a/src/lis2ds12/javaupm_lis2ds12.i +++ b/src/lis2ds12/javaupm_lis2ds12.i @@ -15,13 +15,8 @@ #%ignore installISR(LIS2DS12_INTERRUPT_PINS_T , int , mraa::Edge, void *, void *); -%extend upm::LIS2DS12 { - void installISR(LIS2DS12_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, - runnable); - } -} +%define INTERRUPT LIS2DS12_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::LIS2DS12) JAVA_JNI_LOADLIBRARY(javaupm_lis2ds12) diff --git a/src/lis3dh/javaupm_lis3dh.i b/src/lis3dh/javaupm_lis3dh.i index 7570e777..e40987ab 100644 --- a/src/lis3dh/javaupm_lis3dh.i +++ b/src/lis3dh/javaupm_lis3dh.i @@ -5,10 +5,18 @@ %ignore getAccelerometer(float *, float *, float *); -%include "lis3dh_defs.h" -%include "lis3dh.hpp" %{ #include "lis3dh.hpp" + #include "lis3dh_defs.h" %} +%include "lis3dh_defs.h" +%include "lis3dh.hpp" + + +%ignore installISR(LIS3DH_INTERRUPT_PINS_T , int , mraa::Edge , void *, void* ); + +%define INTERRUPT LIS3DH_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::LIS3DH) JAVA_JNI_LOADLIBRARY(javaupm_lis3dh) diff --git a/src/lis3dh/lis3dh.hpp b/src/lis3dh/lis3dh.hpp index 50dd6dce..a6827db6 100644 --- a/src/lis3dh/lis3dh.hpp +++ b/src/lis3dh/lis3dh.hpp @@ -329,13 +329,6 @@ class LIS3DH */ uint8_t getStatusAux(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void - installISR(LIS3DH_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, jobject runnable) - { - installISR(intr, gpio, level, mraa_java_isr_callback, runnable); - } -#else /** * Install an interrupt handler * @@ -354,7 +347,6 @@ class LIS3DH mraa::Edge level, void (*isr)(void*), void* arg); -#endif /** * Uninstall a previously installed interrupt handler @@ -372,13 +364,5 @@ class LIS3DH LIS3DH(const LIS3DH&) = delete; LIS3DH& operator=(const LIS3DH&) = delete; -// Adding a private function definition for Java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LIS3DH_INTERRUPT_PINS_T intr, - int gpio, - mraa::Edge level, - void (*isr)(void*), - void* arg); -#endif }; } diff --git a/src/lsm303agr/javaupm_lsm303agr.i b/src/lsm303agr/javaupm_lsm303agr.i index 6ac03aa0..ad8962d0 100644 --- a/src/lsm303agr/javaupm_lsm303agr.i +++ b/src/lsm303agr/javaupm_lsm303agr.i @@ -31,13 +31,8 @@ import java.lang.Float; %ignore installISR(LSM303AGR_INTERRUPT_PINS_T , int , mraa::Edge , void *, void *); -%extend upm::LSM303AGR { - void installISR(LSM303AGR_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, runnable); - } -} +%define INTERRUPT LSM303AGR_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::LSM303AGR) JAVA_JNI_LOADLIBRARY(javaupm_lsm303agr) diff --git a/src/lsm6ds3h/javaupm_lsm6ds3h.i b/src/lsm6ds3h/javaupm_lsm6ds3h.i index ca3e042e..f3c7e617 100644 --- a/src/lsm6ds3h/javaupm_lsm6ds3h.i +++ b/src/lsm6ds3h/javaupm_lsm6ds3h.i @@ -15,13 +15,8 @@ %ignore installISR(LSM6DS3H_INTERRUPT_PINS_T , int , mraa::Edge , void *, void *); -%extend upm::LSM6DS3H { - void installISR(LSM6DS3H_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, - runnable); - } -} +%define INTERRUPT LSM6DS3H_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::LSM6DS3H) JAVA_JNI_LOADLIBRARY(javaupm_lsm6ds3h) diff --git a/src/lsm6dsl/javaupm_lsm6dsl.i b/src/lsm6dsl/javaupm_lsm6dsl.i index 8149b114..98d96115 100644 --- a/src/lsm6dsl/javaupm_lsm6dsl.i +++ b/src/lsm6dsl/javaupm_lsm6dsl.i @@ -16,13 +16,7 @@ %ignore installISR(LSM6DSL_INTERRUPT_PINS_T , int , mraa::Edge , void *, void *); -%extend upm::LSM6DSL { - void installISR(LSM6DSL_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, jobject runnable) - { - $self->installISR(intr, gpio, level, mraa_java_isr_callback, - runnable); - } -} - +%define INTERRUPT LSM6DSL_INTERRUPT_PINS_T +%enddef +JAVA_ADD_INSTALLISR_INTERRUPT(upm::LSM6DSL) JAVA_JNI_LOADLIBRARY(javaupm_lsm6dsl) diff --git a/src/mcp2515/javaupm_mcp2515.i b/src/mcp2515/javaupm_mcp2515.i index 8a6380ef..3a696446 100644 --- a/src/mcp2515/javaupm_mcp2515.i +++ b/src/mcp2515/javaupm_mcp2515.i @@ -14,12 +14,5 @@ %ignore installISR(int pin, void *, void *); - -%extend upm::MCP2515 { - void installISR(int pin, jobject runnable) - { - $self->installISR(pin, mraa_java_isr_callback, runnable); - } -} - +JAVA_ADD_INSTALLISR_PIN(upm::MCP2515) JAVA_JNI_LOADLIBRARY(javaupm_mcp2515) diff --git a/src/mma7660/javaupm_mma7660.i b/src/mma7660/javaupm_mma7660.i index 76bd7757..c64cdc44 100644 --- a/src/mma7660/javaupm_mma7660.i +++ b/src/mma7660/javaupm_mma7660.i @@ -35,13 +35,18 @@ JCALL4(SetIntArrayRegion, jenv, $result, 0, 3, (const signed int*)$1); } + %ignore getRawValues(int *, int *, int *); %ignore getAcceleration(float *, float *, float *); -%include "mma7660_regs.h" -%include "mma7660.hpp" %{ #include "mma7660.hpp" + #include "mma7660_regs.h" %} +%include "mma7660_regs.h" +%include "mma7660.hpp" +%ignore installISR(int , void *, void *); + +JAVA_ADD_INSTALLISR_PIN(upm::MMA7660) JAVA_JNI_LOADLIBRARY(javaupm_mma7660) diff --git a/src/mma7660/mma7660.hpp b/src/mma7660/mma7660.hpp index 7fd16225..65cee185 100644 --- a/src/mma7660/mma7660.hpp +++ b/src/mma7660/mma7660.hpp @@ -225,12 +225,7 @@ namespace upm { getRawValues(&values[0], &values[1], &values[2]); return values; } - - void installISR(int pin, jobject runnable) - { - installISR(pin, mraa_java_isr_callback, runnable); - } -#else +#endif /** * Installs an interrupt service routine (ISR) to be called when * an interrupt occurs @@ -241,7 +236,6 @@ namespace upm { * argument to the ISR. */ void installISR(int pin, void (*isr)(void *), void *arg); -#endif // defined(SWIGJAVA) || defined(JAVACALLBACK) protected: mma7660_context m_mma7660; @@ -251,9 +245,5 @@ namespace upm { MMA7660(const MMA7660&) = delete; MMA7660 &operator=(const MMA7660&) = delete; -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int pin, void (*isr)(void *), void *arg); -#endif - }; } diff --git a/src/mpu9150/javaupm_mpu9150.i b/src/mpu9150/javaupm_mpu9150.i index 90fe1149..35174f5e 100644 --- a/src/mpu9150/javaupm_mpu9150.i +++ b/src/mpu9150/javaupm_mpu9150.i @@ -35,19 +35,8 @@ %ignore installISR(int , mraa::Edge , void *, void *); -%extend upm::MPU60X0 { - void installISR(int gpio, mraa::Edge level, - jobject runnable) - { - // delete any existing ISR and GPIO context - $self->uninstallISR(); - - // greate gpio context - mraa::Gpio* swg_gpioIRQ = $self->get_gpioIRQ(); - - swg_gpioIRQ->dir(mraa::DIR_IN); - swg_gpioIRQ->isr(level, runnable); - } -} +%define GETTER get_gpioIRQ() +%enddef +JAVA_ADD_INSTALLISR_GPIO(upm::MPU60X0) JAVA_JNI_LOADLIBRARY(javaupm_mpu9150) diff --git a/src/ttp223/javaupm_ttp223.i b/src/ttp223/javaupm_ttp223.i index 614b6c08..65043218 100644 --- a/src/ttp223/javaupm_ttp223.i +++ b/src/ttp223/javaupm_ttp223.i @@ -13,11 +13,6 @@ #%ignore installISR(mraa::Edge , void *, void *) -%extend upm::TTP223 { - void installISR(mraa::Edge level, jobject runnable) - { - $self->installISR(level, mraa_java_isr_callback, runnable); - } -} +JAVA_ADD_INSTALLISR_EDGE(upm::TTP223) JAVA_JNI_LOADLIBRARY(javaupm_ttp223) diff --git a/src/utilities/javaupm_utilities.i b/src/utilities/javaupm_utilities.i index 11316d12..05a8999c 100644 --- a/src/utilities/javaupm_utilities.i +++ b/src/utilities/javaupm_utilities.i @@ -1,3 +1,12 @@ %module javaupm_utilities -JAVA_JNI_LOADLIBRARY(javaupm_utilities) +%pragma(java) jniclasscode=%{ + static { + try { + System.loadLibrary("javaupm_utilities"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. \n" + e); + System.exit(1); + } + } +%}