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

    <example Usage>
        %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>,
    <example Usage>
        BME280_InterfaceExample.java
    since we cann't define swig versions inside java example file.
    So, instaed added swig versions in Cmake.
    <example Usage>
         if (SWIG_VERSION VERSION_GREATER 3.0.8)
           add_example_with_path(BME280_InterfaceExample bmp280 bmp280)
         endif()

Signed-off-by: sisinty sasmita patra <sisinty.s.patra@intel.com>
This commit is contained in:
sisinty sasmita patra
2017-02-06 14:59:00 -08:00
committed by Sasmita Patra
parent f8663c90f3
commit 1f18369fbe
43 changed files with 215 additions and 82 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -41,7 +41,7 @@ namespace upm
* @snippet light-controllers.cxx Interesting
*/
class ILightController : public IModuleStatus
class ILightController : virtual public IModuleStatus
{
public:
/**

View File

@ -43,7 +43,7 @@ namespace upm
* @snippet light-sensor.cxx Interesting
*/
class ILightSensor : public IModuleStatus
class ILightSensor : virtual public IModuleStatus
{
public:

View File

@ -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;

View File

@ -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;

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::IADC);
%include "iADC.hpp"

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::ICO2Sensor);
%include "iCO2Sensor.hpp"

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::IHumiditySensor);
%include "iHumiditySensor.hpp"

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::ILightController);
%include "iLightController.hpp"

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::ILightSensor);
%include "iLightSensor.hpp"

View File

@ -0,0 +1,5 @@
%include <swiginterface.i>
%interface_impl(upm::IModuleStatus);
%include "iModuleStatus.hpp"

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::IPressureSensor);
%include "iPressureSensor.hpp"

View File

@ -0,0 +1,6 @@
%include <swiginterface.i>
%include "javaupm_interfaces.i"
%include "javaupm_iModuleStatus.i"
%interface_impl(upm::ITemperatureSensor);
%include "iTemperatureSensor.hpp"

View File

@ -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 {

View File

@ -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);
}
}
%}

View File

@ -1,4 +1,5 @@
%module jsupm_interfaces
/*
%include "../upm.i"
%{
@ -9,3 +10,4 @@
%include "iModuleStatus.hpp"
%include "iLightSensor.hpp"
%include "iLightController.hpp"
*/

View File

@ -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"
*/