From 63b2b33df71d5d3cff23e9c18a0655fdc9070288 Mon Sep 17 00:00:00 2001 From: Serban Waltter Date: Wed, 17 Jan 2018 14:20:32 +0200 Subject: [PATCH] Moved SWIG code from C++ files (hpp and cxx) to SWIG interface files (.i). Added getter/setter methods for classes with protected or private vars. --- src/bma220/bma220.cxx | 65 ++++++++----------- src/bma220/bma220.hpp | 26 +++----- src/bma220/javaupm_bma220.i | 18 ++++++ src/bma250e/bma250e.hpp | 18 +----- src/bma250e/javaupm_bma250e.i | 18 +++++- src/bmg160/bmg160.hpp | 14 ---- src/bmg160/javaupm_bmg160.i | 16 ++++- src/bmm150/bmm150.hpp | 15 ----- src/bmm150/javaupm_bmm150.i | 16 ++++- src/bno055/bno055.hpp | 12 ---- src/bno055/javaupm_bno055.i | 14 +++- src/button/button.cxx | 4 +- src/button/button.hpp | 9 +-- src/button/javaupm_button.i | 9 +++ src/grove/grovebutton.cxx | 4 +- src/grove/grovebutton.hpp | 11 ++-- src/grove/javaupm_grove.i | 8 +++ src/lis2ds12/javaupm_lis2ds12.i | 17 ++++- src/lis2ds12/lis2ds12.hpp | 17 +---- src/lsm303agr/javaupm_lsm303agr.i | 17 ++++- src/lsm303agr/lsm303agr.hpp | 15 ----- src/lsm6ds3h/javaupm_lsm6ds3h.i | 16 ++++- src/lsm6ds3h/lsm6ds3h.hpp | 15 ----- src/lsm6dsl/javaupm_lsm6dsl.i | 17 ++++- src/lsm6dsl/lsm6dsl.hpp | 16 ----- src/lsm9ds0/javaupm_lsm9ds0.i | 18 ++++++ src/lsm9ds0/lsm9ds0.cxx | 102 +++++++++++++----------------- src/lsm9ds0/lsm9ds0.hpp | 51 +++++++-------- src/mcp2515/javaupm_mcp2515.i | 14 +++- src/mcp2515/mcp2515.hpp | 13 +--- src/mpu9150/javaupm_mpu9150.i | 17 +++++ src/mpu9150/mpu60x0.cxx | 38 +++++------ src/mpu9150/mpu60x0.hpp | 9 +-- src/rpr220/javaupm_rpr220.i | 2 + src/rpr220/rpr220.cxx | 8 +-- src/rpr220/rpr220.hpp | 10 +-- src/ttp223/javaupm_ttp223.i | 9 +++ src/ttp223/ttp223.cxx | 8 +-- src/ttp223/ttp223.hpp | 12 +--- 39 files changed, 351 insertions(+), 367 deletions(-) diff --git a/src/bma220/bma220.cxx b/src/bma220/bma220.cxx index 4f540be8..86f1c35e 100644 --- a/src/bma220/bma220.cxx +++ b/src/bma220/bma220.cxx @@ -42,7 +42,7 @@ BMA220::BMA220(int bus, uint8_t addr) : m_accelX = 0.0; m_accelY = 0.0; m_accelZ = 0.0; - + m_accelScale = 0.0; mraa::Result rv; @@ -59,7 +59,7 @@ BMA220::BMA220(int bus, uint8_t addr) : // set scaling rate if (!setAccelerometerScale(FSL_RANGE_2G)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set accel scale"); return; } @@ -107,8 +107,8 @@ bool BMA220::writeReg(uint8_t reg, uint8_t val) throw std::runtime_error(std::string(__FUNCTION__) + ": I2c.writeReg() failed"); return false; - } - + } + return true; } @@ -126,11 +126,11 @@ bool BMA220::setAccelerometerScale(FSL_RANGE_T scale) } // store scaling factor - + switch (scale) { case FSL_RANGE_2G: - m_accelScale = 16.0; + m_accelScale = 16.0; break; case FSL_RANGE_4G: @@ -147,7 +147,7 @@ bool BMA220::setAccelerometerScale(FSL_RANGE_T scale) default: // should never occur, but... m_accelScale = 0.0; // set a safe, though incorrect value - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": internal error, unsupported scale"); break; } @@ -193,7 +193,7 @@ bool BMA220::setFilterConfig(FILTER_CONFIG_T filter) reg &= ~(_FILTER_CONFIG_FILTER_MASK << _FILTER_CONFIG_FILTER_SHIFT); reg |= (filter << _FILTER_CONFIG_FILTER_SHIFT); - + return writeReg(REG_FILTER_CONFIG, reg); } @@ -205,7 +205,7 @@ bool BMA220::setSerialHighBW(bool high) reg |= FILTER_CONFIG_SERIAL_HIGH_BW; else reg &= ~FILTER_CONFIG_SERIAL_HIGH_BW; - + return writeReg(REG_FILTER_CONFIG, reg); } @@ -260,7 +260,7 @@ bool BMA220::setSleepDuration(SLEEP_DUR_T dur) reg &= ~(_ENABLE_CONFIG3_SLEEP_DUR_MASK << _ENABLE_CONFIG3_SLEEP_DUR_SHIFT); reg |= (dur << _ENABLE_CONFIG3_SLEEP_DUR_SHIFT); - + return writeReg(REG_ENABLE_CONFIG3, reg); } @@ -273,7 +273,7 @@ bool BMA220::setLowGThreshold(uint8_t thresh) reg &= ~(_THRESHOLD_LOW_MASK << _THRESHOLD_LOW_SHIFT); reg |= (thresh << _THRESHOLD_LOW_SHIFT); - + return writeReg(REG_THRESHOLD, reg); } @@ -286,7 +286,7 @@ bool BMA220::setHighGThreshold(uint8_t thresh) reg &= ~(_THRESHOLD_HIGH_MASK << _THRESHOLD_HIGH_SHIFT); reg |= (thresh << _THRESHOLD_HIGH_SHIFT); - + return writeReg(REG_THRESHOLD, reg); } @@ -299,7 +299,7 @@ bool BMA220::setLowGHysteresis(uint8_t hyst) reg &= ~(_L_HYST_DUR_LOW_HY_MASK << _L_HYST_DUR_LOW_HY_SHIFT); reg |= (hyst << _L_HYST_DUR_LOW_HY_SHIFT); - + return writeReg(REG_L_HYST_DUR, reg); } @@ -312,7 +312,7 @@ bool BMA220::setLowGDuration(uint8_t dur) reg &= ~(_L_HYST_DUR_LOW_DUR_MASK << _L_HYST_DUR_LOW_DUR_SHIFT); reg |= (dur << _L_HYST_DUR_LOW_DUR_SHIFT); - + return writeReg(REG_L_HYST_DUR, reg); } @@ -325,7 +325,7 @@ bool BMA220::setHighGHysteresis(uint8_t hyst) reg &= ~(_H_HYST_DUR_HIGH_HY_MASK << _H_HYST_DUR_HIGH_HY_SHIFT); reg |= (hyst << _H_HYST_DUR_HIGH_HY_SHIFT); - + return writeReg(REG_H_HYST_DUR, reg); } @@ -338,7 +338,7 @@ bool BMA220::setHighGDuration(uint8_t dur) reg &= ~(_H_HYST_DUR_HIGH_DUR_MASK << _H_HYST_DUR_HIGH_DUR_SHIFT); reg |= (dur << _H_HYST_DUR_HIGH_DUR_SHIFT); - + return writeReg(REG_H_HYST_DUR, reg); } @@ -351,7 +351,7 @@ bool BMA220::setTapDuration(uint8_t dur) reg &= ~(_TAP_CONFIG_DUR_MASK << _TAP_CONFIG_DUR_SHIFT); reg |= (dur << _TAP_CONFIG_DUR_SHIFT); - + return writeReg(REG_TAP_CONFIG, reg); } @@ -364,7 +364,7 @@ bool BMA220::setTapThreshold(uint8_t thresh) reg &= ~(_TAP_CONFIG_THRESH_MASK << _TAP_CONFIG_THRESH_SHIFT); reg |= (thresh << _TAP_CONFIG_THRESH_SHIFT); - + return writeReg(REG_TAP_CONFIG, reg); } @@ -389,7 +389,7 @@ bool BMA220::setSlopeDuration(uint8_t dur) reg &= ~(_SLOPE_CONFIG_DUR_MASK << _SLOPE_CONFIG_DUR_SHIFT); reg |= (dur << _SLOPE_CONFIG_DUR_SHIFT); - + return writeReg(REG_SLOPE_CONFIG, reg); } @@ -402,7 +402,7 @@ bool BMA220::setSlopeThreshold(uint8_t thresh) reg &= ~(_SLOPE_CONFIG_THRESH_MASK << _SLOPE_CONFIG_THRESH_SHIFT); reg |= (thresh << _SLOPE_CONFIG_THRESH_SHIFT); - + return writeReg(REG_SLOPE_CONFIG, reg); } @@ -474,7 +474,7 @@ bool BMA220::setInterruptLatch(CONFIG2_LAT_T lat) reg &= ~(_ENABLE_CONFIG2_LAT_INT_MASK << _ENABLE_CONFIG2_LAT_INT_SHIFT); reg |= (lat << _ENABLE_CONFIG2_LAT_INT_SHIFT); - + return writeReg(REG_ENABLE_CONFIG2, reg); } @@ -489,22 +489,8 @@ bool BMA220::resetInterrupts() return writeReg(REG_ENABLE_CONFIG2, reg); } -#if defined(SWIGJAVA) || (JAVACALLBACK) + void BMA220::installISR(int gpio, mraa::Edge level, - jobject runnable) -{ - // delete any existing ISR and GPIO context - uninstallISR(); - - // create gpio context - m_gpioIntr = new mraa::Gpio(gpio); - - m_gpioIntr->dir(mraa::DIR_IN); - m_gpioIntr->isr(level, runnable); - -} -#else -void BMA220::installISR(int gpio, mraa::Edge level, void (*isr)(void *), void *arg) { // delete any existing ISR and GPIO context @@ -516,7 +502,6 @@ void BMA220::installISR(int gpio, mraa::Edge level, m_gpioIntr->dir(mraa::DIR_IN); m_gpioIntr->isr(level, isr, arg); } -#endif void BMA220::uninstallISR() { @@ -524,8 +509,12 @@ void BMA220::uninstallISR() { m_gpioIntr->isrExit(); delete m_gpioIntr; - + m_gpioIntr = 0; } } +mraa::Gpio* BMA220::get_gpioIntr() +{ + return m_gpioIntr; +} diff --git a/src/bma220/bma220.hpp b/src/bma220/bma220.hpp index 8077ade4..3edddace 100644 --- a/src/bma220/bma220.hpp +++ b/src/bma220/bma220.hpp @@ -32,7 +32,7 @@ #define BMA220_DEFAULT_ADDR 0x0a namespace upm { - + /** * @brief BMA220 Accelerometer library * @defgroup bma220 libupm-bma220 @@ -115,7 +115,7 @@ namespace upm { REG_SUSPEND = 0x30, REG_SOFTRESET = 0x32 } REG_T; - + /** * REG_H_HYST_DUR bits @@ -271,7 +271,7 @@ namespace upm { INT_STATUS1_ORIENT_INT = 0x80 // orient intr was generated } INT_STATUS1_BITS_T; - + /** * INT_STATUS1_ORIENT values * @@ -485,7 +485,7 @@ namespace upm { * BMA220 Destructor */ ~BMA220(); - + /** * update the accelerometer values */ @@ -776,9 +776,7 @@ namespace upm { */ bool resetInterrupts(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int gpio, mraa::Edge level, jobject runnable); -#else + /** * install an interrupt handler. * @@ -789,16 +787,17 @@ namespace upm { * @param isr the interrupt handler, accepting a void * argument * @param arg the argument to pass the the interrupt handler */ - void installISR(int gpio, mraa::Edge level, + void installISR(int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif - + /** * uninstall a previously installed interrupt handler * */ void uninstallISR(); + mraa::Gpio* get_gpioIntr(); + protected: mraa::I2c m_i2c; mraa::Gpio *m_gpioIntr; @@ -821,13 +820,6 @@ namespace upm { * update the accelerometer values */ void updateAccelerometer(); - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int gpio, mraa::Edge level, - void (*isr)(void *), void *arg); -#endif }; } - - diff --git a/src/bma220/javaupm_bma220.i b/src/bma220/javaupm_bma220.i index 20c9f800..b960be80 100644 --- a/src/bma220/javaupm_bma220.i +++ b/src/bma220/javaupm_bma220.i @@ -30,4 +30,22 @@ %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); + + } + +} + +%ignore installISR(int, mraa::Edge, void *, void *); + JAVA_JNI_LOADLIBRARY(javaupm_bma220) diff --git a/src/bma250e/bma250e.hpp b/src/bma250e/bma250e.hpp index 632d2563..9b199757 100644 --- a/src/bma250e/bma250e.hpp +++ b/src/bma250e/bma250e.hpp @@ -518,14 +518,7 @@ namespace upm { void setLowPowerMode2(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(BMA250E_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. * * @param intr One of the BMA250E_INTERRUPT_PINS_T values @@ -541,7 +534,6 @@ namespace upm { void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -585,12 +577,6 @@ namespace upm { /* Disable implicit copy and assignment operators */ BMA250E(const BMA250E&) = delete; BMA250E &operator=(const BMA250E&) = delete; - - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - void (*isr)(void *), void *arg); -#endif + }; } diff --git a/src/bma250e/javaupm_bma250e.i b/src/bma250e/javaupm_bma250e.i index d4e6d807..7a782dcb 100644 --- a/src/bma250e/javaupm_bma250e.i +++ b/src/bma250e/javaupm_bma250e.i @@ -20,10 +20,24 @@ import java.lang.Float; %template(floatVector) std::vector; -%include "bma250e_defs.h" -%include "bma250e.hpp" %{ #include "bma250e.hpp" + #include "bma250e_defs.h" %} +%include "bma250e_defs.h" +%include "bma250e.hpp" + + +%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); + } +} + + JAVA_JNI_LOADLIBRARY(javaupm_bma250e) diff --git a/src/bmg160/bmg160.hpp b/src/bmg160/bmg160.hpp index b663c32c..46559f3a 100644 --- a/src/bmg160/bmg160.hpp +++ b/src/bmg160/bmg160.hpp @@ -415,13 +415,6 @@ namespace upm { */ void enableOutputFiltering(bool filter); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(BMG160_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. * @@ -439,7 +432,6 @@ namespace upm { void installISR(BMG160_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -484,11 +476,5 @@ namespace upm { BMG160(const BMG160&) = delete; BMG160 &operator=(const BMG160&) = delete; - // needs to be private for SWIG Java builds -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(BMG160_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - void (*isr)(void *), void *arg); -#endif }; } diff --git a/src/bmg160/javaupm_bmg160.i b/src/bmg160/javaupm_bmg160.i index 86bcc664..739e059e 100644 --- a/src/bmg160/javaupm_bmg160.i +++ b/src/bmg160/javaupm_bmg160.i @@ -20,10 +20,22 @@ import java.lang.Float; %template(floatVector) std::vector; -%include "bmg160_defs.h" -%include "bmg160.hpp" %{ #include "bmg160.hpp" + #include "bmg160_defs.h" %} +%include "bmg160_defs.h" +%include "bmg160.hpp" + + +%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); + } +} JAVA_JNI_LOADLIBRARY(javaupm_bmg160) diff --git a/src/bmm150/bmm150.hpp b/src/bmm150/bmm150.hpp index fecc6a76..b7aad494 100644 --- a/src/bmm150/bmm150.hpp +++ b/src/bmm150/bmm150.hpp @@ -281,14 +281,6 @@ namespace upm { */ void setRepetitionsZ(uint8_t reps); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(BMM150_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. * @@ -305,7 +297,6 @@ namespace upm { void installISR(BMM150_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * Uninstall a previously installed interrupt handler. @@ -350,11 +341,5 @@ namespace upm { BMM150(const BMM150&) = delete; BMM150 &operator=(const BMM150&) = delete; - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(BMM150_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - void (*isr)(void *), void *arg); -#endif }; } diff --git a/src/bmm150/javaupm_bmm150.i b/src/bmm150/javaupm_bmm150.i index 11ff3433..37bc4664 100644 --- a/src/bmm150/javaupm_bmm150.i +++ b/src/bmm150/javaupm_bmm150.i @@ -20,10 +20,22 @@ import java.lang.Float; %template(floatVector) std::vector; -%include "bmm150_defs.h" -%include "bmm150.hpp" %{ #include "bmm150.hpp" + #include "bmm150_defs.h" %} +%include "bmm150_defs.h" +%include "bmm150.hpp" + +%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); + } +} JAVA_JNI_LOADLIBRARY(javaupm_bmm150) diff --git a/src/bno055/bno055.hpp b/src/bno055/bno055.hpp index 73ce7af2..ba25468a 100644 --- a/src/bno055/bno055.hpp +++ b/src/bno055/bno055.hpp @@ -622,12 +622,6 @@ namespace upm { BNO055_SYS_ERR_T getSystemError(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int gpio, mraa_gpio_edge_t level, jobject runnable) - { - installISR(gpio, level, mraa_java_isr_callback, runnable); - } -#else /** * install an interrupt handler. * @@ -641,7 +635,6 @@ namespace upm { */ void installISR(int gpio, mraa_gpio_edge_t level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -707,10 +700,5 @@ namespace upm { BNO055(const BNO055&) = delete; BNO055 &operator=(const BNO055&) = delete; - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int gpio, mraa_gpio_edge_t level, - void (*isr)(void *), void *arg); -#endif }; } diff --git a/src/bno055/javaupm_bno055.i b/src/bno055/javaupm_bno055.i index d3a1f463..76d985e9 100644 --- a/src/bno055/javaupm_bno055.i +++ b/src/bno055/javaupm_bno055.i @@ -18,10 +18,20 @@ %template(byteVector) std::vector; %template(intVector) std::vector; -%include "bno055_regs.h" -%include "bno055.hpp" %{ #include "bno055.hpp" + #include "bno055_regs.h" %} +%include "bno055_regs.h" +%include "bno055.hpp" + +%ignore installISR(int , mraa::Edge , void *, void *); + +%extend upm::BNO055 { + void installISR(int gpio, mraa_gpio_edge_t level, jobject runnable) + { + $self->installISR(gpio, level, mraa_java_isr_callback, runnable); + } +} JAVA_JNI_LOADLIBRARY(javaupm_bno055) diff --git a/src/button/button.cxx b/src/button/button.cxx index 0b902a0a..51a51b97 100644 --- a/src/button/button.cxx +++ b/src/button/button.cxx @@ -59,12 +59,12 @@ int Button::value() return mraa_gpio_read(m_gpio); } -#ifdef JAVACALLBACK +/*#ifdef JAVACALLBACK void Button::installISR(mraa::Edge level, jobject runnable) { installISR(level, mraa_java_isr_callback, runnable); } -#endif +#endif*/ void Button::installISR(mraa::Edge level, void (*isr)(void *), void *arg) { diff --git a/src/button/button.hpp b/src/button/button.hpp index 6e604580..8696226f 100644 --- a/src/button/button.hpp +++ b/src/button/button.hpp @@ -87,11 +87,11 @@ class Button{ * @param arg Pointer to an object to be supplied as an * argument to the ISR. */ -#if defined(SWIGJAVA) || defined(JAVACALLBACK) +/*#if defined(SWIGJAVA) || defined(JAVACALLBACK) void installISR(mraa::Edge level, jobject runnable); -#else +#else*/ void installISR(mraa::Edge level, void (*isr)(void *), void *arg); -#endif +//#endif /** * Uninstalls the previously installed ISR * @@ -99,9 +99,6 @@ class Button{ void uninstallISR(); private: -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(mraa::Edge level, void (*isr)(void *), void *arg); -#endif bool m_isrInstalled; std::string m_name; mraa_gpio_context m_gpio; diff --git a/src/button/javaupm_button.i b/src/button/javaupm_button.i index d03de00a..273d5282 100644 --- a/src/button/javaupm_button.i +++ b/src/button/javaupm_button.i @@ -9,4 +9,13 @@ %include "button.hpp" +#%ignore + +%extend upm::Button { + void installISR(mraa::Edge level, jobject runnable) + { + $self->installISR(level, mraa_java_isr_callback, runnable); + } +} + JAVA_JNI_LOADLIBRARY(javaupm_button) diff --git a/src/grove/grovebutton.cxx b/src/grove/grovebutton.cxx index a4926285..5c77b960 100644 --- a/src/grove/grovebutton.cxx +++ b/src/grove/grovebutton.cxx @@ -58,12 +58,12 @@ int GroveButton::value() return mraa_gpio_read(m_gpio); } -#ifdef JAVACALLBACK +/*#ifdef JAVACALLBACK void GroveButton::installISR(mraa::Edge level, jobject runnable) { installISR(level, mraa_java_isr_callback, runnable); } -#endif +#endif*/ void GroveButton::installISR(mraa::Edge level, void (*isr)(void *), void *arg) { diff --git a/src/grove/grovebutton.hpp b/src/grove/grovebutton.hpp index a99092bf..00761332 100644 --- a/src/grove/grovebutton.hpp +++ b/src/grove/grovebutton.hpp @@ -84,11 +84,11 @@ 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 +//#if defined(SWIGJAVA) || defined(JAVACALLBACK) + // void installISR(mraa::Edge level, jobject runnable); +//#else void installISR(mraa::Edge level, void (*isr)(void *), void *arg); -#endif +//#endif /** * Uninstalls the previously installed ISR * @@ -96,9 +96,6 @@ class GroveButton: public Grove { void uninstallISR(); private: -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(mraa::Edge level, void (*isr)(void *), void *arg); -#endif bool m_isrInstalled; std::string m_name; mraa_gpio_context m_gpio; diff --git a/src/grove/javaupm_grove.i b/src/grove/javaupm_grove.i index 8ef86b84..4c8f5840 100644 --- a/src/grove/javaupm_grove.i +++ b/src/grove/javaupm_grove.i @@ -49,4 +49,12 @@ #include "grovetemp.hpp" %} +%extend upm::GroveButton { + void installISR(mraa::Edge level, jobject runnable) + { + $self->installISR(level, mraa_java_isr_callback, runnable); + } +} + + JAVA_JNI_LOADLIBRARY(javaupm_grove) diff --git a/src/lis2ds12/javaupm_lis2ds12.i b/src/lis2ds12/javaupm_lis2ds12.i index 80c7d9b7..7d99d0b1 100644 --- a/src/lis2ds12/javaupm_lis2ds12.i +++ b/src/lis2ds12/javaupm_lis2ds12.i @@ -5,10 +5,23 @@ %ignore getAccelerometer(float *, float *, float *); -%include "lis2ds12_defs.h" -%include "lis2ds12.hpp" %{ #include "lis2ds12.hpp" + #include "lis2ds12_defs.h" %} +%include "lis2ds12_defs.h" +%include "lis2ds12.hpp" + + +#%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); + } +} JAVA_JNI_LOADLIBRARY(javaupm_lis2ds12) diff --git a/src/lis2ds12/lis2ds12.hpp b/src/lis2ds12/lis2ds12.hpp index e2da9ba8..fcc9b8cf 100644 --- a/src/lis2ds12/lis2ds12.hpp +++ b/src/lis2ds12/lis2ds12.hpp @@ -247,14 +247,6 @@ namespace upm { */ uint8_t getStatus(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LIS2DS12_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 * @@ -271,7 +263,6 @@ namespace upm { void installISR(LIS2DS12_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -316,12 +307,6 @@ namespace upm { /* Disable implicit copy and assignment operators */ LIS2DS12(const LIS2DS12&) = delete; LIS2DS12 &operator=(const LIS2DS12&) = delete; - - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LIS2DS12_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 71141af4..6ac03aa0 100644 --- a/src/lsm303agr/javaupm_lsm303agr.i +++ b/src/lsm303agr/javaupm_lsm303agr.i @@ -21,10 +21,23 @@ import java.lang.Float; %template(floatVector) std::vector; -%include "lsm303agr_defs.h" -%include "lsm303agr.hpp" %{ #include "lsm303agr.hpp" + #include "lsm303agr_defs.h" %} +%include "lsm303agr_defs.h" +%include "lsm303agr.hpp" + + +%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); + } +} JAVA_JNI_LOADLIBRARY(javaupm_lsm303agr) diff --git a/src/lsm303agr/lsm303agr.hpp b/src/lsm303agr/lsm303agr.hpp index aa41a5a2..72542d07 100644 --- a/src/lsm303agr/lsm303agr.hpp +++ b/src/lsm303agr/lsm303agr.hpp @@ -303,14 +303,6 @@ namespace upm { */ uint8_t getMagnetometerIntSrc(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LSM303AGR_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 * @@ -327,7 +319,6 @@ namespace upm { void installISR(LSM303AGR_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * Uninstall a previously installed interrupt handler @@ -373,11 +364,5 @@ namespace upm { LSM303AGR(const LSM303AGR&) = delete; LSM303AGR &operator=(const LSM303AGR&) = delete; - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LSM303AGR_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - void (*isr)(void *), void *arg); -#endif }; } diff --git a/src/lsm6ds3h/javaupm_lsm6ds3h.i b/src/lsm6ds3h/javaupm_lsm6ds3h.i index 0fb6eef7..ca3e042e 100644 --- a/src/lsm6ds3h/javaupm_lsm6ds3h.i +++ b/src/lsm6ds3h/javaupm_lsm6ds3h.i @@ -6,10 +6,22 @@ %ignore getAccelerometer(float *, float *, float *); %ignore getGyroscope(float *, float *, float *); -%include "lsm6ds3h_defs.h" -%include "lsm6ds3h.hpp" %{ #include "lsm6ds3h.hpp" + #include "lsm6ds3h_defs.h" %} +%include "lsm6ds3h_defs.h" +%include "lsm6ds3h.hpp" + +%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); + } +} JAVA_JNI_LOADLIBRARY(javaupm_lsm6ds3h) diff --git a/src/lsm6ds3h/lsm6ds3h.hpp b/src/lsm6ds3h/lsm6ds3h.hpp index 558c06eb..4eff1594 100644 --- a/src/lsm6ds3h/lsm6ds3h.hpp +++ b/src/lsm6ds3h/lsm6ds3h.hpp @@ -261,14 +261,6 @@ namespace upm { */ uint8_t getStatus(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LSM6DS3H_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 * @@ -285,7 +277,6 @@ namespace upm { void installISR(LSM6DS3H_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -330,11 +321,5 @@ namespace upm { LSM6DS3H(const LSM6DS3H&) = delete; LSM6DS3H &operator=(const LSM6DS3H&) = delete; - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LSM6DS3H_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - void (*isr)(void *), void *arg); -#endif }; } diff --git a/src/lsm6dsl/javaupm_lsm6dsl.i b/src/lsm6dsl/javaupm_lsm6dsl.i index d9c8dc51..8149b114 100644 --- a/src/lsm6dsl/javaupm_lsm6dsl.i +++ b/src/lsm6dsl/javaupm_lsm6dsl.i @@ -6,10 +6,23 @@ %ignore getAccelerometer(float *, float *, float *); %ignore getGyroscope(float *, float *, float *); -%include "lsm6dsl_defs.h" -%include "lsm6dsl.hpp" %{ #include "lsm6dsl.hpp" + #include "lsm6dsl_defs.h" %} +%include "lsm6dsl_defs.h" +%include "lsm6dsl.hpp" + + +%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); + } +} JAVA_JNI_LOADLIBRARY(javaupm_lsm6dsl) diff --git a/src/lsm6dsl/lsm6dsl.hpp b/src/lsm6dsl/lsm6dsl.hpp index 95e6aff8..77031a0e 100644 --- a/src/lsm6dsl/lsm6dsl.hpp +++ b/src/lsm6dsl/lsm6dsl.hpp @@ -277,15 +277,6 @@ namespace upm { */ void setAccelerometerOffsets(int x, int y, int z, bool weight); - -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LSM6DSL_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 * @@ -302,7 +293,6 @@ namespace upm { void installISR(LSM6DSL_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -347,11 +337,5 @@ namespace upm { LSM6DSL(const LSM6DSL&) = delete; LSM6DSL &operator=(const LSM6DSL&) = delete; - // Adding a private function definition for java bindings -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(LSM6DSL_INTERRUPT_PINS_T intr, int gpio, - mraa::Edge level, - void (*isr)(void *), void *arg); -#endif }; } diff --git a/src/lsm9ds0/javaupm_lsm9ds0.i b/src/lsm9ds0/javaupm_lsm9ds0.i index 97975f45..4e2c584e 100644 --- a/src/lsm9ds0/javaupm_lsm9ds0.i +++ b/src/lsm9ds0/javaupm_lsm9ds0.i @@ -42,6 +42,24 @@ #include "lsm9ds0.hpp" %} +%ignore installISR(LSM6DSL_INTERRUPT_PINS_T , int , mraa::Edge , void *, void *); + +%extend upm::LSM9DS0 { + installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, + jobject runnable) + { + // delete any existing ISR and GPIO context + $self->uninstallISR(intr); + + // greate gpio context + getPin(intr) = new mraa::Gpio(gpio); + + getPin(intr)->dir(mraa::DIR_IN); + getPin(intr)->isr(level, runnable); + + } +} + %include "lsm9ds0.hpp" JAVA_JNI_LOADLIBRARY(javaupm_lsm9ds0) diff --git a/src/lsm9ds0/lsm9ds0.cxx b/src/lsm9ds0/lsm9ds0.cxx index b8e4f1ca..b4bfcf12 100644 --- a/src/lsm9ds0/lsm9ds0.cxx +++ b/src/lsm9ds0/lsm9ds0.cxx @@ -43,15 +43,15 @@ LSM9DS0::LSM9DS0(int bus, bool raw, uint8_t gAddress, uint8_t xmAddress) : m_accelX = 0.0; m_accelY = 0.0; m_accelZ = 0.0; - + m_gyroX = 0.0; m_gyroY = 0.0; m_gyroZ = 0.0; - + m_magX = 0.0; m_magY = 0.0; m_magZ = 0.0; - + m_temp = 0.0; m_accelScale = 0.0; @@ -68,7 +68,7 @@ LSM9DS0::LSM9DS0(int bus, bool raw, uint8_t gAddress, uint8_t xmAddress) : if ( (rv = m_i2cXM.address(m_xmAddr)) != mraa::SUCCESS) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Could not initialize XM i2c address"); return; } @@ -89,24 +89,24 @@ bool LSM9DS0::init() // power up if (!setGyroscopePowerDown(false)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to wake up gyro"); return false; } - + // enable all axes if (!setGyroscopeEnableAxes(CTRL_REG1_G_YEN |CTRL_REG1_G_XEN | CTRL_REG1_G_ZEN)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to enable gyro axes"); return false; } - + // set gyro ODR if (!setGyroscopeODR(G_ODR_95_25)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set gyro ODR"); return false; } @@ -114,7 +114,7 @@ bool LSM9DS0::init() // set gyro scale if (!setGyroscopeScale(G_FS_245)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set gyro scale"); return false; } @@ -124,7 +124,7 @@ bool LSM9DS0::init() // power up and set ODR if (!setAccelerometerODR(XM_AODR_100)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set accel ODR"); return false; } @@ -133,35 +133,35 @@ bool LSM9DS0::init() if (!setAccelerometerEnableAxes(CTRL_REG1_XM_AXEN |CTRL_REG1_XM_AYEN | CTRL_REG1_XM_AZEN)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to enable accel axes"); return false; } - + // set scaling rate if (!setAccelerometerScale(XM_AFS_2)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set accel scale"); return false; } - + // temperature sensor // enable the temperature sensor if (!enableTemperatureSensor(true)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to enable temp sensor"); return false; } // Init the magnetometer - + // set mode (this also powers it up if not XM_MD_POWERDOWN) if (!setMagnetometerMode(XM_MD_CONTINUOUS)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set mag scale"); return false; } @@ -169,7 +169,7 @@ bool LSM9DS0::init() // turn LPM off if (!setMagnetometerLPM(false)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to disable mag LPM"); return false; } @@ -177,23 +177,23 @@ bool LSM9DS0::init() // set resolution if (!setMagnetometerResolution(XM_RES_LOW)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set mag res"); return false; } - + // set ODR if (!setMagnetometerODR(XM_ODR_12_5)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set mag ODR"); return false; } - + // set scale if (!setMagnetometerScale(XM_MFS_2)) { - throw std::runtime_error(string(__FUNCTION__) + + throw std::runtime_error(string(__FUNCTION__) + ": Unable to set mag scale"); return false; } @@ -293,7 +293,7 @@ uint8_t LSM9DS0::readReg(DEVICE_T dev, uint8_t reg) case DEV_GYRO: device = &m_i2cG; break; case DEV_XM: device = &m_i2cXM; break; default: - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": Internal error, invalid device specified"); return 0; } @@ -310,7 +310,7 @@ void LSM9DS0::readRegs(DEVICE_T dev, uint8_t reg, uint8_t *buffer, int len) case DEV_GYRO: device = &m_i2cG; break; case DEV_XM: device = &m_i2cXM; break; default: - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": Internal error, invalid device specified"); return; } @@ -329,7 +329,7 @@ bool LSM9DS0::writeReg(DEVICE_T dev, uint8_t reg, uint8_t val) case DEV_GYRO: device = &m_i2cG; break; case DEV_XM: device = &m_i2cXM; break; default: - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": Internal error, invalid device specified"); return false; } @@ -340,8 +340,8 @@ bool LSM9DS0::writeReg(DEVICE_T dev, uint8_t reg, uint8_t val) throw std::runtime_error(std::string(__FUNCTION__) + ": I2c.writeReg() failed"); return false; - } - + } + return true; } @@ -380,7 +380,7 @@ bool LSM9DS0::setGyroscopeODR(G_ODR_T odr) reg &= ~(_CTRL_REG1_G_ODR_MASK << _CTRL_REG1_G_ODR_SHIFT); reg |= (odr << _CTRL_REG1_G_ODR_SHIFT); - + return writeReg(DEV_GYRO, REG_CTRL_REG1_G, reg); } @@ -415,7 +415,7 @@ bool LSM9DS0::setGyroscopeScale(G_FS_T scale) default: // should never occur, but... m_gyroScale = 0.0; // set a safe, though incorrect value - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": internal error, unsupported scale"); break; } @@ -446,7 +446,7 @@ bool LSM9DS0::setAccelerometerODR(XM_AODR_T odr) reg &= ~(_CTRL_REG1_XM_AODR_MASK << _CTRL_REG1_XM_AODR_SHIFT); reg |= (odr << _CTRL_REG1_XM_AODR_SHIFT); - + return writeReg(DEV_XM, REG_CTRL_REG1_XM, reg); } @@ -464,11 +464,11 @@ bool LSM9DS0::setAccelerometerScale(XM_AFS_T scale) } // store scaling factor - + switch (scale) { case XM_AFS_2: - m_accelScale = 0.061; + m_accelScale = 0.061; break; case XM_AFS_4: @@ -489,7 +489,7 @@ bool LSM9DS0::setAccelerometerScale(XM_AFS_T scale) default: // should never occur, but... m_accelScale = 0.0; // set a safe, though incorrect value - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": internal error, unsupported scale"); break; } @@ -504,7 +504,7 @@ bool LSM9DS0::setMagnetometerResolution(XM_RES_T res) reg &= ~(_CTRL_REG5_XM_RES_MASK << _CTRL_REG5_XM_RES_SHIFT); reg |= (res << _CTRL_REG5_XM_RES_SHIFT); - + return writeReg(DEV_XM, REG_CTRL_REG5_XM, reg); } @@ -515,7 +515,7 @@ bool LSM9DS0::setMagnetometerODR(XM_ODR_T odr) reg &= ~(_CTRL_REG5_XM_ODR_MASK << _CTRL_REG5_XM_ODR_SHIFT); reg |= (odr << _CTRL_REG5_XM_ODR_SHIFT); - + return writeReg(DEV_XM, REG_CTRL_REG5_XM, reg); } @@ -526,7 +526,7 @@ bool LSM9DS0::setMagnetometerMode(XM_MD_T mode) reg &= ~(_CTRL_REG7_XM_MD_MASK << _CTRL_REG7_XM_MD_SHIFT); reg |= (mode << _CTRL_REG7_XM_MD_SHIFT); - + return writeReg(DEV_XM, REG_CTRL_REG7_XM, reg); } @@ -538,7 +538,7 @@ bool LSM9DS0::setMagnetometerLPM(bool enable) reg |= CTRL_REG7_XM_MLP; else reg &= ~CTRL_REG7_XM_MLP; - + return writeReg(DEV_XM, REG_CTRL_REG7_XM, reg); } @@ -556,7 +556,7 @@ bool LSM9DS0::setMagnetometerScale(XM_MFS_T scale) } // store scaling factor - + switch (scale) { case XM_MFS_2: @@ -577,7 +577,7 @@ bool LSM9DS0::setMagnetometerScale(XM_MFS_T scale) default: // should never occur, but... m_magScale = 0.0; // set a safe, though incorrect value - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": internal error, unsupported scale"); break; } @@ -741,22 +741,8 @@ uint8_t LSM9DS0::getInterruptGen2Src() return readReg(DEV_XM, REG_INT_GEN_2_SRC); } -#if defined(SWIGJAVA) || defined (JAVACALLBACK) + void LSM9DS0::installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, - jobject runnable) -{ - // delete any existing ISR and GPIO context - uninstallISR(intr); - - // greate gpio context - getPin(intr) = new mraa::Gpio(gpio); - - getPin(intr)->dir(mraa::DIR_IN); - getPin(intr)->isr(level, runnable); - -} -#else -void LSM9DS0::installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg) { // delete any existing ISR and GPIO context @@ -768,7 +754,7 @@ void LSM9DS0::installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, getPin(intr)->dir(mraa::DIR_IN); getPin(intr)->isr(level, isr, arg); } -#endif + void LSM9DS0::uninstallISR(INTERRUPT_PINS_T intr) { @@ -776,7 +762,7 @@ void LSM9DS0::uninstallISR(INTERRUPT_PINS_T intr) { getPin(intr)->isrExit(); delete getPin(intr); - + getPin(intr) = 0; } } diff --git a/src/lsm9ds0/lsm9ds0.hpp b/src/lsm9ds0/lsm9ds0.hpp index 3d8169f0..bb49e4c3 100644 --- a/src/lsm9ds0/lsm9ds0.hpp +++ b/src/lsm9ds0/lsm9ds0.hpp @@ -34,7 +34,7 @@ #define LSM9DS0_DEFAULT_GYRO_ADDR 0x6b namespace upm { - + /** * @brief LSM9DS0 accelerometer library * @defgroup lsm9ds0 libupm-lsm9ds0 @@ -50,7 +50,7 @@ namespace upm { * @con i2c gpio * @web https://www.sparkfun.com/products/13033 * - * @brief API for the LSM9DS0 3-axis Gyroscope, Accelerometer, + * @brief API for the LSM9DS0 3-axis Gyroscope, Accelerometer, * and Magnetometer * * The LSM9DS0 is a system-in-package featuring a 3D digital linear @@ -109,13 +109,13 @@ namespace upm { REG_STATUS_REG_G = 0x27, - REG_OUT_X_L_G = 0x28, // gyro output, X axis, LSB - REG_OUT_X_H_G = 0x29, // gyro output, X axis, MSB + REG_OUT_X_L_G = 0x28, // gyro output, X axis, LSB + REG_OUT_X_H_G = 0x29, // gyro output, X axis, MSB REG_OUT_Y_L_G = 0x2a, REG_OUT_Y_H_G = 0x2b, REG_OUT_Z_L_G = 0x2c, REG_OUT_Z_H_G = 0x2d, - + REG_FIFO_CTRL_REG_G = 0x2e, REG_FIFO_SRC_REG_G = 0x2f, @@ -133,14 +133,14 @@ namespace upm { // on how to use this register REG_INT1_DURATION_G = 0x38 } REG_G_T; - + /** * Gyro CTRL_REG1_G bits */ typedef enum { CTRL_REG1_G_YEN = 0x01, // Y enable, odd ordering... - CTRL_REG1_G_XEN = 0x02, - CTRL_REG1_G_ZEN = 0x04, + CTRL_REG1_G_XEN = 0x02, + CTRL_REG1_G_ZEN = 0x04, CTRL_REG1_G_PD = 0x08, // power down (0) CTRL_REG1_G_BW0 = 0x10, // bandwidth @@ -328,7 +328,7 @@ namespace upm { CTRL_REG5_G_BOOT = 0x80 // reboot memory content } CTRL_REG5_G_BITS_T; - + /** * CRTL_REG5_G_OUTSEL and INT1SEL values. See Figure 18 in the * datasheet. @@ -366,7 +366,7 @@ namespace upm { FIFO_CTRL_REG_G_WTM4 = 0x10, _FIFO_CTRL_REG_G_WTM_MASK = 31, _FIFO_CTRL_REG_G_WTM_SHIFT = 0, - + FIFO_CTRL_REG_G_FM0 = 0x20, // FIFO mode config FIFO_CTRL_REG_G_FM1 = 0x40, FIFO_CTRL_REG_G_FM2 = 0x80, @@ -524,7 +524,7 @@ namespace upm { REG_TIME_LIMIT = 0x3b, REG_TIME_LATENCY = 0x3c, REG_TIME_WINDOW = 0x3d, - + REG_ACT_THS = 0x3e, REG_ACT_DUR = 0x3f } REG_XM_T; @@ -552,7 +552,7 @@ namespace upm { INT_CTRL_REG_M_4D = 0x02, INT_CTRL_REG_M_IEL = 0x04, // latch intr request INT_CTRL_REG_M_IEA = 0x08, - INT_CTRL_REG_M_PP_OD = 0x10, // push-pull/open drian + INT_CTRL_REG_M_PP_OD = 0x10, // push-pull/open drian INT_CTRL_REG_M_ZMIEN = 0x20, // Z mag axis interrupt recognition INT_CTRL_REG_M_YMIEN = 0x40, INT_CTRL_REG_M_XMIEN = 0x80 @@ -600,7 +600,7 @@ namespace upm { CTRL_REG1_XM_BDU = 0x04, // block data update CTRL_REG1_XM_AODR0 = 0x10, // accelerometer output data rate - CTRL_REG1_XM_AODR1 = 0x20, + CTRL_REG1_XM_AODR1 = 0x20, CTRL_REG1_XM_AODR2 = 0x40, CTRL_REG1_XM_AODR3 = 0x80, _CTRL_REG1_XM_AODR_MASK = 15, @@ -624,7 +624,7 @@ namespace upm { XM_AODR_1000 = 10 // 11-15 unused } XM_AODR_T; - + /** * CTRL_REG2_XM bits */ @@ -740,7 +740,7 @@ namespace upm { XM_ODR_25 = 3, XM_ODR_50 = 4, XM_ODR_100 = 5 - + // 6, 7 reserved } XM_ODR_T; @@ -749,9 +749,9 @@ namespace upm { */ typedef enum { XM_RES_LOW = 0, // low resolution - + // 1, 2 reserved - + XM_RES_HIGH = 3, } XM_RES_T; @@ -850,7 +850,7 @@ namespace upm { FIFO_CTRL_REG_FTH4 = 0x10, _FIFO_CTRL_REG_FTH_MASK = 31, _FIFO_CTRL_REG_FTH_SHIFT = 0, - + FIFO_CTRL_REG_FM0 = 0x20, // FIFO mode config FIFO_CTRL_REG_FM1 = 0x40, FIFO_CTRL_REG_FM2 = 0x80, @@ -970,7 +970,7 @@ namespace upm { CLICK_CONFIG_ZD = 0x20 // 0x40, 0x80 reserved } CLICK_CONFIG_BITS_T; - + /** * CLICK_SRC bits * @@ -1072,7 +1072,7 @@ namespace upm { * LSM9DS0 Destructor */ ~LSM9DS0(); - + /** * set up initial values and start operation * @@ -1416,10 +1416,7 @@ namespace upm { */ uint8_t getInterruptGen2Src(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, - jobject runnable); -#else + /** * install an interrupt handler. * @@ -1432,9 +1429,9 @@ namespace upm { * @param isr the interrupt handler, accepting a void * argument * @param arg the argument to pass the the interrupt handler */ - void installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, + void installISR(INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif + /** * uninstall a previously installed interrupt handler * @@ -1486,5 +1483,3 @@ namespace upm { mraa::Gpio *m_gpioXM_GEN2; }; } - - diff --git a/src/mcp2515/javaupm_mcp2515.i b/src/mcp2515/javaupm_mcp2515.i index be9ef445..8a6380ef 100644 --- a/src/mcp2515/javaupm_mcp2515.i +++ b/src/mcp2515/javaupm_mcp2515.i @@ -5,11 +5,21 @@ %include "../java_buffer.i" %include "std_string.i" -%include "mcp2515_regs.h" -%include "mcp2515.hpp" %{ #include "mcp2515.hpp" + #include "mcp2515_regs.h" %} +%include "mcp2515_regs.h" +%include "mcp2515.hpp" +%ignore installISR(int pin, void *, void *); + + +%extend upm::MCP2515 { + void installISR(int pin, jobject runnable) + { + $self->installISR(pin, mraa_java_isr_callback, runnable); + } +} JAVA_JNI_LOADLIBRARY(javaupm_mcp2515) diff --git a/src/mcp2515/mcp2515.hpp b/src/mcp2515/mcp2515.hpp index e465f205..ce6ce5f6 100644 --- a/src/mcp2515/mcp2515.hpp +++ b/src/mcp2515/mcp2515.hpp @@ -324,12 +324,7 @@ namespace upm { return std::string((char *)m_message.pkt.data, m_message.len); } -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int pin, jobject runnable) - { - installISR(pin, mraa_java_isr_callback, runnable); - } -#else + /** * Installs an interrupt service routine (ISR) to be called when * an interrupt occurs. @@ -340,7 +335,7 @@ namespace upm { * argument to the ISR. */ void installISR(int pin, void (*isr)(void *), void *arg); -#endif + /** * Uninstalls the previously installed ISR @@ -518,9 +513,5 @@ namespace upm { /* Disable implicit copy and assignment operators */ MCP2515(const MCP2515&) = delete; MCP2515 &operator=(const MCP2515&) = 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 e2b77eab..90fe1149 100644 --- a/src/mpu9150/javaupm_mpu9150.i +++ b/src/mpu9150/javaupm_mpu9150.i @@ -33,4 +33,21 @@ %include "mpu60x0.hpp" %include "mpu9150.hpp" +%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); + } +} + JAVA_JNI_LOADLIBRARY(javaupm_mpu9150) diff --git a/src/mpu9150/mpu60x0.cxx b/src/mpu9150/mpu60x0.cxx index 7962c380..9ccde924 100644 --- a/src/mpu9150/mpu60x0.cxx +++ b/src/mpu9150/mpu60x0.cxx @@ -40,11 +40,11 @@ MPU60X0::MPU60X0(int bus, uint8_t address) : m_accelX = 0.0; m_accelY = 0.0; m_accelZ = 0.0; - + m_gyroX = 0.0; m_gyroY = 0.0; m_gyroZ = 0.0; - + m_temp = 0.0; m_accelScale = 1.0; @@ -154,8 +154,8 @@ bool MPU60X0::writeReg(uint8_t reg, uint8_t val) throw std::runtime_error(std::string(__FUNCTION__) + ": I2c.writeReg() failed"); return false; - } - + } + return true; } @@ -217,7 +217,7 @@ bool MPU60X0::setGyroscopeScale(FS_SEL_T scale) default: // should never occur, but... m_gyroScale = 1.0; // set a safe, though incorrect value - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": internal error, unsupported scale"); break; } @@ -239,7 +239,7 @@ bool MPU60X0::setAccelerometerScale(AFS_SEL_T scale) } // store scaling factor - + switch (scale) { case AFS_2: @@ -260,7 +260,7 @@ bool MPU60X0::setAccelerometerScale(AFS_SEL_T scale) default: // should never occur, but... m_accelScale = 1.0; // set a safe, though incorrect value - throw std::logic_error(string(__FUNCTION__) + + throw std::logic_error(string(__FUNCTION__) + ": internal error, unsupported scale"); break; } @@ -384,21 +384,8 @@ uint8_t MPU60X0::getInterruptPinConfig() return readReg(REG_INT_PIN_CFG); } -#if defined(SWIGJAVA) || defined(JAVACALLBACK) + void MPU60X0::installISR(int gpio, mraa::Edge level, - jobject runnable) -{ - // delete any existing ISR and GPIO context - uninstallISR(); - - // greate gpio context - m_gpioIRQ = new mraa::Gpio(gpio); - - m_gpioIRQ->dir(mraa::DIR_IN); - m_gpioIRQ->isr(level, runnable); -} -#else -void MPU60X0::installISR(int gpio, mraa::Edge level, void (*isr)(void *), void *arg) { // delete any existing ISR and GPIO context @@ -410,7 +397,7 @@ void MPU60X0::installISR(int gpio, mraa::Edge level, m_gpioIRQ->dir(mraa::DIR_IN); m_gpioIRQ->isr(level, isr, arg); } -#endif + void MPU60X0::uninstallISR() { @@ -418,7 +405,12 @@ void MPU60X0::uninstallISR() { m_gpioIRQ->isrExit(); delete m_gpioIRQ; - + m_gpioIRQ = 0; } } + + mraa::Gpio* MPU60X0::get_gpioIRQ() + { + return m_gpioIRQ; + } diff --git a/src/mpu9150/mpu60x0.hpp b/src/mpu9150/mpu60x0.hpp index 4efe41d7..91d7aa03 100644 --- a/src/mpu9150/mpu60x0.hpp +++ b/src/mpu9150/mpu60x0.hpp @@ -901,11 +901,8 @@ namespace upm { * @param isr the interrupt handler, accepting a void * argument * @param arg the argument to pass the the interrupt handler */ -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(int gpio, mraa::Edge level, jobject runnable); -#else + void installISR(int gpio, mraa::Edge level, void (*isr)(void *), void *arg); -#endif /** * uninstall a previously installed interrupt handler @@ -913,6 +910,8 @@ namespace upm { */ void uninstallISR(); + mraa::Gpio* get_gpioIRQ(); + protected: // uncompensated accelerometer and gyroscope values float m_accelX; @@ -942,5 +941,3 @@ namespace upm { mraa::Gpio *m_gpioIRQ; }; } - - diff --git a/src/rpr220/javaupm_rpr220.i b/src/rpr220/javaupm_rpr220.i index 98b27f54..7c5fb42b 100644 --- a/src/rpr220/javaupm_rpr220.i +++ b/src/rpr220/javaupm_rpr220.i @@ -8,3 +8,5 @@ %include "rpr220.hpp" JAVA_JNI_LOADLIBRARY(javaupm_rpr220) + +JAVA_ADD_INSTALLISR(upm::RPR220) diff --git a/src/rpr220/rpr220.cxx b/src/rpr220/rpr220.cxx index 9f14257d..a8b503f7 100644 --- a/src/rpr220/rpr220.cxx +++ b/src/rpr220/rpr220.cxx @@ -49,12 +49,7 @@ bool RPR220::blackDetected() return rpr220_black_detected(m_rpr220); } -#ifdef JAVACALLBACK -void RPR220::installISR(jobject runnable) -{ - installISR(mraa_java_isr_callback, runnable); -} -#endif + void RPR220::installISR(void (*isr)(void *), void *arg) { @@ -65,4 +60,3 @@ void RPR220::uninstallISR() { rpr220_uninstall_isr(m_rpr220); } - diff --git a/src/rpr220/rpr220.hpp b/src/rpr220/rpr220.hpp index 0eaeb87b..29503bc4 100644 --- a/src/rpr220/rpr220.hpp +++ b/src/rpr220/rpr220.hpp @@ -83,9 +83,7 @@ namespace upm { */ bool blackDetected(); -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(jobject runnable); -#else + /** * Installs an ISR to be called when * black is detected @@ -95,7 +93,6 @@ namespace upm { * argument to the ISR. */ void installISR(void (*isr)(void *), void *arg); -#endif /** * Uninstalls the previously installed ISR @@ -110,10 +107,5 @@ namespace upm { rpr220_context m_rpr220; -#if defined(SWIGJAVA) || defined(JAVACALLBACK) - void installISR(void (*isr)(void *), void *arg); -#endif }; } - - diff --git a/src/ttp223/javaupm_ttp223.i b/src/ttp223/javaupm_ttp223.i index 60676cde..614b6c08 100644 --- a/src/ttp223/javaupm_ttp223.i +++ b/src/ttp223/javaupm_ttp223.i @@ -11,4 +11,13 @@ %include "ttp223.hpp" +#%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_JNI_LOADLIBRARY(javaupm_ttp223) diff --git a/src/ttp223/ttp223.cxx b/src/ttp223/ttp223.cxx index 7e2775dc..94cef4e9 100644 --- a/src/ttp223/ttp223.cxx +++ b/src/ttp223/ttp223.cxx @@ -31,7 +31,7 @@ using namespace upm; TTP223::TTP223(unsigned int pin) { // initialize gpio input - if ( !(m_gpio = mraa_gpio_init(pin)) ) + if ( !(m_gpio = mraa_gpio_init(pin)) ) { throw std::invalid_argument(std::string(__FUNCTION__) + ": mraa_gpio_init() failed, invalid pin?"); @@ -59,12 +59,6 @@ bool TTP223::isPressed() { return this->value() == 1; } -#ifdef JAVACALLBACK -void TTP223::installISR(mraa::Edge level, jobject runnable) -{ - installISR(level, mraa_java_isr_callback, runnable); -} -#endif void TTP223::installISR(mraa::Edge level, void (*isr)(void *), void *arg) { diff --git a/src/ttp223/ttp223.hpp b/src/ttp223/ttp223.hpp index 3162b223..1fd16fda 100644 --- a/src/ttp223/ttp223.hpp +++ b/src/ttp223/ttp223.hpp @@ -43,10 +43,10 @@ namespace upm { * @con gpio * * @brief API for the TTP223 Touch Sensor - * + * * This touch sensor detects when a finger is near the metallic pad * by the change in capacitance. It can replace a more traditional push - * button. The touch sensor can still function when placed under a + * button. The touch sensor can still function when placed under a * non-metallic surface like glass or plastic. * * @image html ttp223.jpg @@ -95,11 +95,8 @@ class TTP223 { * @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 * @@ -107,9 +104,6 @@ class TTP223 { void uninstallISR(); 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 mraa_gpio_context m_gpio; //!< GPIO pin bool m_isrInstalled;