From 1f18369fbe3b3eea40bafe2be2e912dc32e56b94 Mon Sep 17 00:00:00 2001 From: sisinty sasmita patra Date: Mon, 6 Feb 2017 14:59:00 -0800 Subject: [PATCH] SWIG_JAVA: C++ Interfaces to Java interfaces, Modified one Java Example This commit translates C++ interfaces to Java interfaces, previously C++ Interfaces implemented java classes. * Added java swig interface files for all C++ interfaces to simplify swig javaupm_iADC.i javaupm_iCO2Sensor.i javaupm_iHumiditySensor.i javaupm_iLightController.i javaupm_iLightSensor.i javaupm_iModuleStatus.i javaupm_interfaces.i javaupm_iPressureSensor.i javaupm_iTemperatureSensor.i %include"../interfaces/javaupm_iADC.i" * Modified swig interface files for few sensors that implements interfaces ads1x15 bmp280 bmpx8x ds1808lc hlg150h lp8860 max44009 ms5611 si1132 si7005 t6713 * Removed few methods that were mentioned Protected and made them public, so that menthods can be overridden * Made IModuleStatus virtual to avoid ambiguity in multiple inheritance For example class A {}; class B : public A {}; class C : public A {}; class D : public B, public C {}; This can be solved as class A {}; class B : virtual public A {}; class C : virtual public A {}; class D : public B, public C {}; * Modified java interface files to support multiple swig versions * Modified javaupm interface file to support standard auto load library code * Fixed autoloadlibrary tests for interfaces * Created one interface example separately , BME280_InterfaceExample.java since we cann't define swig versions inside java example file. So, instaed added swig versions in Cmake. if (SWIG_VERSION VERSION_GREATER 3.0.8) add_example_with_path(BME280_InterfaceExample bmp280 bmp280) endif() Signed-off-by: sisinty sasmita patra --- examples/java/BME280_InterfaceExample.java | 70 +++++++++++++++++++++ examples/java/CMakeLists.txt | 5 ++ src/ads1x15/javaupm_ads1x15.i | 8 ++- src/bmp280/javaupm_bmp280.i | 16 +++-- src/bmpx8x/javaupm_bmpx8x.i | 7 ++- src/ds1808lc/ds1808lc.cxx | 1 - src/ds1808lc/ds1808lc.hpp | 1 - src/ds1808lc/javaupm_ds1808lc.i | 7 ++- src/hlg150h/hlg150h.hpp | 3 +- src/hlg150h/javaupm_hlg150h.i | 5 ++ src/interfaces/iADC.hpp | 2 +- src/interfaces/iCO2Sensor.hpp | 3 +- src/interfaces/iHumiditySensor.hpp | 2 +- src/interfaces/iLightController.hpp | 2 +- src/interfaces/iLightSensor.hpp | 2 +- src/interfaces/iPressureSensor.hpp | 4 +- src/interfaces/iTemperatureSensor.hpp | 2 +- src/interfaces/javaupm_iADC.i | 6 ++ src/interfaces/javaupm_iCO2Sensor.i | 6 ++ src/interfaces/javaupm_iHumiditySensor.i | 6 ++ src/interfaces/javaupm_iLightController.i | 6 ++ src/interfaces/javaupm_iLightSensor.i | 6 ++ src/interfaces/javaupm_iModuleStatus.i | 5 ++ src/interfaces/javaupm_iPressureSensor.i | 6 ++ src/interfaces/javaupm_iTemperatureSensor.i | 6 ++ src/interfaces/javaupm_interfaces.i | 17 +---- src/interfaces/javaupm_light_sensor.i | 26 -------- src/interfaces/jsupm_interfaces.i | 2 + src/interfaces/pyupm_interfaces.i | 2 + src/lp8860/javaupm_lp8860.i | 5 ++ src/lp8860/lp8860.hpp | 2 +- src/max44009/javaupm_max44009.i | 5 ++ src/max44009/max44009.hpp | 2 +- src/ms5611/javaupm_ms5611.i | 5 ++ src/ms5611/ms5611.hpp | 2 +- src/si1132/javaupm_si1132.i | 5 +- src/si1132/si1132.hpp | 2 +- src/si7005/javaupm_si7005.i | 6 ++ src/si7005/si7005.hpp | 3 +- src/t6713/javaupm_t6713.i | 5 ++ src/t6713/t6713.cxx | 5 -- src/t6713/t6713.hpp | 2 +- tests/check_autoloadlibrary.py | 14 +++-- 43 files changed, 215 insertions(+), 82 deletions(-) create mode 100644 examples/java/BME280_InterfaceExample.java create mode 100644 src/interfaces/javaupm_iADC.i create mode 100644 src/interfaces/javaupm_iCO2Sensor.i create mode 100644 src/interfaces/javaupm_iHumiditySensor.i create mode 100644 src/interfaces/javaupm_iLightController.i create mode 100644 src/interfaces/javaupm_iLightSensor.i create mode 100644 src/interfaces/javaupm_iModuleStatus.i create mode 100644 src/interfaces/javaupm_iPressureSensor.i create mode 100644 src/interfaces/javaupm_iTemperatureSensor.i delete mode 100644 src/interfaces/javaupm_light_sensor.i diff --git a/examples/java/BME280_InterfaceExample.java b/examples/java/BME280_InterfaceExample.java new file mode 100644 index 00000000..0fbf9f26 --- /dev/null +++ b/examples/java/BME280_InterfaceExample.java @@ -0,0 +1,70 @@ +/* + * Author: Jon Trulson + * Author: Sisinty Sasmita Patra + * Copyright (c) 2016 Intel Corporation. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +import upm_bmp280.*; + +public class BME280_InterfaceExample +{ + public static void main(String[] args) throws InterruptedException + { +// ! [Interesting] + + // Instantiate a BME280 instance using default i2c bus and address + BME280 sensor = new BME280(); + + ITemperatureSensor t_sensor = sensor; + IHumiditySensor h_sensor = sensor; + IPressureSensor p_sensor = sensor; + + // For SPI, bus 0, you would pass -1 as the address, and a + // valid pin for CS: + // BME280(0, -1, 10); + + while (true) + { + // update our values from the sensor + sensor.update(); + + System.out.println("Calling Interface Functions: "); + + System.out.println("Compensation Temperature: " + + t_sensor.getTemperatureCelsius() + + " C / "); + + System.out.println("Pressure: " + + p_sensor.getPressurePa() + + " Pa"); + + System.out.println("Humidity: " + + h_sensor.getHumidityRelative() + + " %RH"); + + System.out.println(); + Thread.sleep(1000); + } + +// ! [Interesting] + } +} diff --git a/examples/java/CMakeLists.txt b/examples/java/CMakeLists.txt index 401ac230..484850aa 100644 --- a/examples/java/CMakeLists.txt +++ b/examples/java/CMakeLists.txt @@ -172,6 +172,11 @@ add_example_with_path(Lcm1602_parallelSample lcd i2clcd) add_example_with_path(SSD1308_oledSample lcd i2clcd) add_example_with_path(SSD1327_oledSample lcd i2clcd) add_example_with_path(BME280_Example bmp280 bmp280) + +if(SWIG_VERSION VERSION_GREATER 3.0.8) + add_example_with_path(BME280_InterfaceExample bmp280 bmp280) +endif() + add_example_with_path(BMA250E_Example bmx055 bmx055) add_example_with_path(BMG160_Example bmx055 bmx055) add_example_with_path(BMM150_Example bmx055 bmx055) diff --git a/src/ads1x15/javaupm_ads1x15.i b/src/ads1x15/javaupm_ads1x15.i index d24c87b0..9f7d86ad 100644 --- a/src/ads1x15/javaupm_ads1x15.i +++ b/src/ads1x15/javaupm_ads1x15.i @@ -1,5 +1,10 @@ %module javaupm_ads1x15 %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include"../interfaces/javaupm_iADC.i" +#endif + %include "typemaps.i" %{ @@ -8,14 +13,11 @@ #include "ads1115.hpp" %} -%include "iModuleStatus.hpp" %include "iADC.hpp" %include "ads1x15.hpp" %include "ads1015.hpp" %include "ads1115.hpp" - - %pragma(java) jniclasscode=%{ static { try { diff --git a/src/bmp280/javaupm_bmp280.i b/src/bmp280/javaupm_bmp280.i index 63395546..484967c4 100644 --- a/src/bmp280/javaupm_bmp280.i +++ b/src/bmp280/javaupm_bmp280.i @@ -1,14 +1,22 @@ %module javaupm_bmp280 %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iTemperatureSensor.i" +%include "../interfaces/javaupm_iHumiditySensor.i" +%include "../interfaces/javaupm_iPressureSensor.i" +#else +%include "iModuleStatus.hpp" +%include "iTemperatureSensor.hpp" +%include "iPressureSensor.hpp" +%include "iHumiditySensor.hpp" +#endif + %include "cpointer.i" %include "typemaps.i" %include "arrays_java.i"; %include "../java_buffer.i" -%include "iModuleStatus.hpp" -%include "iHumiditySensor.hpp" -%include "iPressureSensor.hpp" -%include "iTemperatureSensor.hpp" %include "bmp280.hpp" %{ #include "bmp280.hpp" diff --git a/src/bmpx8x/javaupm_bmpx8x.i b/src/bmpx8x/javaupm_bmpx8x.i index d50c74d4..691ac6c5 100644 --- a/src/bmpx8x/javaupm_bmpx8x.i +++ b/src/bmpx8x/javaupm_bmpx8x.i @@ -1,6 +1,11 @@ %module javaupm_bmpx8x %include "../upm.i" +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iTemperatureSensor.i" +%include "../interfaces/javaupm_iPressureSensor.i" +#endif + %{ #include "bmpx8x.hpp" %} @@ -16,4 +21,4 @@ System.exit(1); } } -%} \ No newline at end of file +%} diff --git a/src/ds1808lc/ds1808lc.cxx b/src/ds1808lc/ds1808lc.cxx index ff98980c..4e001102 100644 --- a/src/ds1808lc/ds1808lc.cxx +++ b/src/ds1808lc/ds1808lc.cxx @@ -26,7 +26,6 @@ DS1808LC::~DS1808LC() { } - bool DS1808LC::isPowered() { return static_cast(MraaUtils::getGpio(pinPower)); diff --git a/src/ds1808lc/ds1808lc.hpp b/src/ds1808lc/ds1808lc.hpp index 5ae9d1c3..cdaf74d2 100644 --- a/src/ds1808lc/ds1808lc.hpp +++ b/src/ds1808lc/ds1808lc.hpp @@ -56,7 +56,6 @@ public: DS1808LC(int gpioPower, int i2cBus); ~DS1808LC(); -protected: const char* getModuleName() { return "ds1808lc"; } bool isPowered(); void setPowerOn(); diff --git a/src/ds1808lc/javaupm_ds1808lc.i b/src/ds1808lc/javaupm_ds1808lc.i index 69f63b62..612de3fa 100644 --- a/src/ds1808lc/javaupm_ds1808lc.i +++ b/src/ds1808lc/javaupm_ds1808lc.i @@ -1,5 +1,10 @@ %module javaupm_ds1808lc %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iLightController.i" +#endif + %include "arrays_java.i"; %include "../java_buffer.i" %include "cpointer.i" @@ -9,8 +14,6 @@ #include "ds1808lc.hpp" %} -%include "iModuleStatus.hpp" -%include "iLightController.hpp" %include "ds1808lc.hpp" %pragma(java) jniclasscode=%{ diff --git a/src/hlg150h/hlg150h.hpp b/src/hlg150h/hlg150h.hpp index 0fa0f314..e8eccccb 100644 --- a/src/hlg150h/hlg150h.hpp +++ b/src/hlg150h/hlg150h.hpp @@ -58,13 +58,12 @@ public: HLG150H(int pinRelay, int pinPWM); ~HLG150H(); -protected: + virtual int getBrightness(); const char* getModuleName() { return "hlg150h"; } void setPowerOn(); void setPowerOff(); bool isPowered(); void setBrightness(int dutyPercent); - int getBrightness(); private: mraa::Result status; diff --git a/src/hlg150h/javaupm_hlg150h.i b/src/hlg150h/javaupm_hlg150h.i index ffe620b1..5d2f8ade 100644 --- a/src/hlg150h/javaupm_hlg150h.i +++ b/src/hlg150h/javaupm_hlg150h.i @@ -1,5 +1,10 @@ %module javaupm_hlg150h %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iLightController.i" +#endif + %include "arrays_java.i"; %include "../java_buffer.i" %include "cpointer.i" diff --git a/src/interfaces/iADC.hpp b/src/interfaces/iADC.hpp index ad127edd..f883a10c 100644 --- a/src/interfaces/iADC.hpp +++ b/src/interfaces/iADC.hpp @@ -35,7 +35,7 @@ namespace upm * @brief Interface for ADC Sensors */ - class IADC : public IModuleStatus + class IADC : virtual public IModuleStatus { public: virtual unsigned int getResolutionInBits() = 0; diff --git a/src/interfaces/iCO2Sensor.hpp b/src/interfaces/iCO2Sensor.hpp index cbb1460b..1b00e12b 100644 --- a/src/interfaces/iCO2Sensor.hpp +++ b/src/interfaces/iCO2Sensor.hpp @@ -26,14 +26,13 @@ #pragma once #include "iModuleStatus.hpp" - namespace upm { /** * @brief Interface for CO Sensor */ - class ICO2Sensor : public IModuleStatus + class ICO2Sensor : virtual public IModuleStatus { public: virtual uint16_t getPpm() = 0; diff --git a/src/interfaces/iHumiditySensor.hpp b/src/interfaces/iHumiditySensor.hpp index 360d91e5..48077d5a 100644 --- a/src/interfaces/iHumiditySensor.hpp +++ b/src/interfaces/iHumiditySensor.hpp @@ -31,7 +31,7 @@ namespace upm * @brief Interface for Humidity Sensors */ - class IHumiditySensor : public IModuleStatus + class IHumiditySensor : virtual public IModuleStatus { public: virtual int getHumidityRelative () = 0; diff --git a/src/interfaces/iLightController.hpp b/src/interfaces/iLightController.hpp index 395cbf4f..9b07bd3d 100644 --- a/src/interfaces/iLightController.hpp +++ b/src/interfaces/iLightController.hpp @@ -41,7 +41,7 @@ namespace upm * @snippet light-controllers.cxx Interesting */ - class ILightController : public IModuleStatus + class ILightController : virtual public IModuleStatus { public: /** diff --git a/src/interfaces/iLightSensor.hpp b/src/interfaces/iLightSensor.hpp index 1d58e622..31d34196 100644 --- a/src/interfaces/iLightSensor.hpp +++ b/src/interfaces/iLightSensor.hpp @@ -43,7 +43,7 @@ namespace upm * @snippet light-sensor.cxx Interesting */ - class ILightSensor : public IModuleStatus + class ILightSensor : virtual public IModuleStatus { public: diff --git a/src/interfaces/iPressureSensor.hpp b/src/interfaces/iPressureSensor.hpp index 63688b1d..f7af2d05 100644 --- a/src/interfaces/iPressureSensor.hpp +++ b/src/interfaces/iPressureSensor.hpp @@ -31,11 +31,11 @@ namespace upm { -/** +/* * @brief Interface for Pressue Sensors */ - class IPressureSensor : public IModuleStatus + class IPressureSensor : virtual public IModuleStatus { public: virtual int getPressurePa() = 0; diff --git a/src/interfaces/iTemperatureSensor.hpp b/src/interfaces/iTemperatureSensor.hpp index 2ec6c032..bea30aed 100644 --- a/src/interfaces/iTemperatureSensor.hpp +++ b/src/interfaces/iTemperatureSensor.hpp @@ -31,7 +31,7 @@ namespace upm * @brief Interface for Temperature Sensors */ - class ITemperatureSensor : public IModuleStatus + class ITemperatureSensor : virtual public IModuleStatus { public: virtual int getTemperatureCelsius () = 0; diff --git a/src/interfaces/javaupm_iADC.i b/src/interfaces/javaupm_iADC.i new file mode 100644 index 00000000..ef398c33 --- /dev/null +++ b/src/interfaces/javaupm_iADC.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::IADC); + +%include "iADC.hpp" diff --git a/src/interfaces/javaupm_iCO2Sensor.i b/src/interfaces/javaupm_iCO2Sensor.i new file mode 100644 index 00000000..f5efafe6 --- /dev/null +++ b/src/interfaces/javaupm_iCO2Sensor.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::ICO2Sensor); + +%include "iCO2Sensor.hpp" diff --git a/src/interfaces/javaupm_iHumiditySensor.i b/src/interfaces/javaupm_iHumiditySensor.i new file mode 100644 index 00000000..5d5a18e4 --- /dev/null +++ b/src/interfaces/javaupm_iHumiditySensor.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::IHumiditySensor); + +%include "iHumiditySensor.hpp" diff --git a/src/interfaces/javaupm_iLightController.i b/src/interfaces/javaupm_iLightController.i new file mode 100644 index 00000000..7c8fc821 --- /dev/null +++ b/src/interfaces/javaupm_iLightController.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::ILightController); + +%include "iLightController.hpp" diff --git a/src/interfaces/javaupm_iLightSensor.i b/src/interfaces/javaupm_iLightSensor.i new file mode 100644 index 00000000..37454706 --- /dev/null +++ b/src/interfaces/javaupm_iLightSensor.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::ILightSensor); + +%include "iLightSensor.hpp" diff --git a/src/interfaces/javaupm_iModuleStatus.i b/src/interfaces/javaupm_iModuleStatus.i new file mode 100644 index 00000000..901ce49d --- /dev/null +++ b/src/interfaces/javaupm_iModuleStatus.i @@ -0,0 +1,5 @@ +%include + +%interface_impl(upm::IModuleStatus); + +%include "iModuleStatus.hpp" diff --git a/src/interfaces/javaupm_iPressureSensor.i b/src/interfaces/javaupm_iPressureSensor.i new file mode 100644 index 00000000..ab898f66 --- /dev/null +++ b/src/interfaces/javaupm_iPressureSensor.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::IPressureSensor); + +%include "iPressureSensor.hpp" diff --git a/src/interfaces/javaupm_iTemperatureSensor.i b/src/interfaces/javaupm_iTemperatureSensor.i new file mode 100644 index 00000000..2e35be3d --- /dev/null +++ b/src/interfaces/javaupm_iTemperatureSensor.i @@ -0,0 +1,6 @@ +%include +%include "javaupm_interfaces.i" +%include "javaupm_iModuleStatus.i" +%interface_impl(upm::ITemperatureSensor); + +%include "iTemperatureSensor.hpp" diff --git a/src/interfaces/javaupm_interfaces.i b/src/interfaces/javaupm_interfaces.i index 5d1b6c11..93f4d973 100644 --- a/src/interfaces/javaupm_interfaces.i +++ b/src/interfaces/javaupm_interfaces.i @@ -1,19 +1,4 @@ -%module(directors="1") javaupm_interfaces - -%feature("director") IModuleStatus; -%feature("director") ILightSensor; -%feature("director") ILightController; - - -%{ - #include "iModuleStatus.hpp" - #include "iLightSensor.hpp" - #include "iLightController.hpp" -%} - -%include "iModuleStatus.hpp" -%include "iLightSensor.hpp" -%include "iLightController.hpp" +%module javaupm_interfaces %pragma(java) jniclasscode=%{ static { diff --git a/src/interfaces/javaupm_light_sensor.i b/src/interfaces/javaupm_light_sensor.i deleted file mode 100644 index 285bad76..00000000 --- a/src/interfaces/javaupm_light_sensor.i +++ /dev/null @@ -1,26 +0,0 @@ -%module(directors="1") javaupm_light_sensor - -%{ - #include "iLightSensor.hpp" -%} - -/* -%include "../iModuleStatus.hpp" -*/ -%include "iLightSensor.hpp" - -%feature("director") IModuleStatus; -%feature("director") ILightSensor; - -%include "iLightSensor.hpp" - -%pragma(java) jniclasscode=%{ - static { - try { - System.loadLibrary("javaupm_light_sensor"); - } catch (UnsatisfiedLinkError e) { - System.err.println("Native code library failed to load. \n" + e); - System.exit(1); - } - } -%} diff --git a/src/interfaces/jsupm_interfaces.i b/src/interfaces/jsupm_interfaces.i index 7a2cd0f6..3cd3c00c 100644 --- a/src/interfaces/jsupm_interfaces.i +++ b/src/interfaces/jsupm_interfaces.i @@ -1,4 +1,5 @@ %module jsupm_interfaces +/* %include "../upm.i" %{ @@ -9,3 +10,4 @@ %include "iModuleStatus.hpp" %include "iLightSensor.hpp" %include "iLightController.hpp" +*/ diff --git a/src/interfaces/pyupm_interfaces.i b/src/interfaces/pyupm_interfaces.i index 85c85764..02cfd636 100644 --- a/src/interfaces/pyupm_interfaces.i +++ b/src/interfaces/pyupm_interfaces.i @@ -1,4 +1,5 @@ %module pyupm_interfaces +/* %include "../upm.i" // Include doxygen-generated documentation %include "pyupm_doxy2swig.i" @@ -13,3 +14,4 @@ %include "iModuleStatus.hpp" %include "iLightSensor.hpp" %include "iLightController.hpp" +*/ diff --git a/src/lp8860/javaupm_lp8860.i b/src/lp8860/javaupm_lp8860.i index 4512305c..3da88b79 100644 --- a/src/lp8860/javaupm_lp8860.i +++ b/src/lp8860/javaupm_lp8860.i @@ -1,4 +1,9 @@ %module javaupm_lp8860 + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iLightController.i" +#endif + %include "../upm.i" %{ diff --git a/src/lp8860/lp8860.hpp b/src/lp8860/lp8860.hpp index 2991deea..06a7601f 100644 --- a/src/lp8860/lp8860.hpp +++ b/src/lp8860/lp8860.hpp @@ -56,7 +56,7 @@ class LP8860 : public upm::ILightController public: LP8860(int gpioPower, int i2cBus); ~LP8860(); - const char* getModuleName() { return "lp8860"; } + virtual const char* getModuleName() { return "lp8860"; } bool isPowered(); void setPowerOn(); void setPowerOff(); diff --git a/src/max44009/javaupm_max44009.i b/src/max44009/javaupm_max44009.i index c6ce339d..af194413 100644 --- a/src/max44009/javaupm_max44009.i +++ b/src/max44009/javaupm_max44009.i @@ -1,5 +1,10 @@ %module javaupm_max44009 %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iLightSensor.i" +#endif + %include "arrays_java.i"; %include "../java_buffer.i" %include "cpointer.i" diff --git a/src/max44009/max44009.hpp b/src/max44009/max44009.hpp index 6574ab37..e2e1bc79 100644 --- a/src/max44009/max44009.hpp +++ b/src/max44009/max44009.hpp @@ -131,7 +131,7 @@ class MAX44009 : public ILightSensor { */ double getVisibleLux(); - const char* getModuleName() { return "max44009"; } + virtual const char* getModuleName() { return "max44009"; } private: mraa::Result reset(); diff --git a/src/ms5611/javaupm_ms5611.i b/src/ms5611/javaupm_ms5611.i index 6afd595c..2650fd59 100644 --- a/src/ms5611/javaupm_ms5611.i +++ b/src/ms5611/javaupm_ms5611.i @@ -1,6 +1,11 @@ %module javaupm_ms5611 %include "../upm.i" +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iTemperatureSensor.i" +%include "../interfaces/javaupm_iPressureSensor.i" +#endif + %{ #include "ms5611.hpp" %} diff --git a/src/ms5611/ms5611.hpp b/src/ms5611/ms5611.hpp index 1e861280..b3f667b4 100644 --- a/src/ms5611/ms5611.hpp +++ b/src/ms5611/ms5611.hpp @@ -68,7 +68,7 @@ public: MS5611(int i2cBus = 0, int address = MS5611_ADDRESS); ~MS5611(); - const char* getModuleName() { return "ms5611"; } + virtual const char* getModuleName() { return "ms5611"; } void setOverSampling(OsrMode osrMode); int getTemperatureCelsius(); int getPressurePa(); diff --git a/src/si1132/javaupm_si1132.i b/src/si1132/javaupm_si1132.i index bdbfe317..e05d0dae 100644 --- a/src/si1132/javaupm_si1132.i +++ b/src/si1132/javaupm_si1132.i @@ -1,6 +1,9 @@ %module(directors="1") javaupm_si1132 %include "../upm.i" -%include "../interfaces/javaupm_interfaces.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iLightSensor.i" +#endif %pragma(java) jniclasscode=%{ static { diff --git a/src/si1132/si1132.hpp b/src/si1132/si1132.hpp index c532b5f5..1e8e4c5d 100644 --- a/src/si1132/si1132.hpp +++ b/src/si1132/si1132.hpp @@ -80,7 +80,7 @@ class SI1132 : public ILightSensor { */ double getVisibleLux(); - const char* getModuleName() { return "si1132"; } + virtual const char* getModuleName() { return "si1132"; } private: mraa::Result reset(); diff --git a/src/si7005/javaupm_si7005.i b/src/si7005/javaupm_si7005.i index 66e9dff4..84e43769 100644 --- a/src/si7005/javaupm_si7005.i +++ b/src/si7005/javaupm_si7005.i @@ -1,5 +1,11 @@ %module javaupm_si7005 %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iTemperatureSensor.i" +%include "../interfaces/javaupm_iHumiditySensor.i" +#endif + %include "arrays_java.i"; %include "../java_buffer.i" %include "cpointer.i" diff --git a/src/si7005/si7005.hpp b/src/si7005/si7005.hpp index ca6f91a6..21fe161c 100644 --- a/src/si7005/si7005.hpp +++ b/src/si7005/si7005.hpp @@ -32,7 +32,6 @@ #define SI7005_ADDRESS ( 0x40 ) #define SI7005_NOT_FOUND ( 0x00 ) - namespace upm { /** @@ -99,7 +98,7 @@ class SI7005 : public ITemperatureSensor, public IHumiditySensor { /** * Returns sensor module name */ - const char* getModuleName() { return "si7005"; } + virtual const char* getModuleName() { return "si7005"; } /** * Detects the sensor to ensure it is connected as required. diff --git a/src/t6713/javaupm_t6713.i b/src/t6713/javaupm_t6713.i index 9851bea3..4a69c4ce 100644 --- a/src/t6713/javaupm_t6713.i +++ b/src/t6713/javaupm_t6713.i @@ -1,5 +1,10 @@ %module javaupm_t6713 %include "../upm.i" + +#if SWIG_VERSION >= 0x030009 +%include "../interfaces/javaupm_iCO2Sensor.i" +#endif + %include "arrays_java.i"; %include "../java_buffer.i" %include "cpointer.i" diff --git a/src/t6713/t6713.cxx b/src/t6713/t6713.cxx index 07cc500b..cbc88fd4 100644 --- a/src/t6713/t6713.cxx +++ b/src/t6713/t6713.cxx @@ -65,11 +65,6 @@ T6713::~T6713() delete i2c; } -const char* T6713::getModuleName() -{ - return "t6713"; -} - uint16_t T6713::getFirmwareRevision() { return(getSensorData(T6713_COMMAND_GET_FIRMWARE_REVISION)); diff --git a/src/t6713/t6713.hpp b/src/t6713/t6713.hpp index 50609c3b..ca3251a0 100644 --- a/src/t6713/t6713.hpp +++ b/src/t6713/t6713.hpp @@ -125,7 +125,7 @@ class T6713 : public ICO2Sensor { /** * Returns sensor module name */ - const char* getModuleName(); + virtual const char* getModuleName() { return "t6713"; } /** * Get relative humidity measurement. diff --git a/tests/check_autoloadlibrary.py b/tests/check_autoloadlibrary.py index c32257e7..fcbde099 100755 --- a/tests/check_autoloadlibrary.py +++ b/tests/check_autoloadlibrary.py @@ -10,7 +10,7 @@ prefix = """ try { System.loadLibrary(\"""" -sufix = """\"); +suffix = """\"); } catch (UnsatisfiedLinkError e) { System.err.println("Native code library failed to load. \\n" + e); System.exit(1); @@ -27,10 +27,16 @@ class AutoLoadLibrary(u.TestCase): for fileName in files: if fnmatch.fnmatch(fileName, 'javaupm_*.i'): moduleName = fileName[:-2] - snippet = prefix + moduleName + sufix + snippet = prefix + moduleName + suffix with open(os.path.join(subdir, fileName), "r") as f: - if not snippet in f.read(): + #read in entire file + data = f.read() + #Make sure it is module + if not '%module' in data: + print "%%module not found in %s, skipping" % fileName + continue + if not snippet in data: broken_modules.append('%s: %s' % \ (moduleName, os.path.join(subdir, fileName))) @@ -38,7 +44,7 @@ class AutoLoadLibrary(u.TestCase): "\nThe following modules do not contain the standard auto load library code:\n" + \ "\n".join(broken_modules) + \ "\nConsider adding the following snippet to the SWIG interface file:\n" + \ - prefix + "" + sufix) + prefix + "" + suffix) if __name__ == '__main__':