diff --git a/include/interfaces/CMakeLists.txt b/include/interfaces/CMakeLists.txt new file mode 100644 index 00000000..9e314723 --- /dev/null +++ b/include/interfaces/CMakeLists.txt @@ -0,0 +1,29 @@ +set (libname "new_interfaces") +set (libdescription "CXX Interface Library") +set (module_src ${libname}.cxx) + +upm_module_init() + +# Add a PUBLIC include directory to the CMAKE src dir +target_include_directories (${libname} PUBLIC ${CMAKE_SOURCE_DIR}/src) + +# Don't add the hpp files with upm_module_init, this allows +# them to be installed separately +set (module_hpp iClock.hpp + iCollision.hpp + iDistance.hpp + iDistanceInterrupter.hpp + iEC.hpp + iEmg.hpp + iHallEffect.hpp + iHeartRate.hpp + iHumidity.hpp + iLight.hpp + iLineFinder.hpp + iMoisture.hpp + iMotion.hpp + iPressure.hpp + iTemperature.hpp +) +# Install interfaces headers a bit differently +install (FILES ${module_hpp} DESTINATION include/upm/interfaces COMPONENT ${libname}) diff --git a/include/interfaces/new_interfaces.cxx b/include/interfaces/new_interfaces.cxx new file mode 100644 index 00000000..d9310b7e --- /dev/null +++ b/include/interfaces/new_interfaces.cxx @@ -0,0 +1,15 @@ +#include "iClock.hpp" +#include "iCollision.hpp" +#include "iDistance.hpp" +#include "iDistanceInterrupter.hpp" +#include "iEC.hpp" +#include "iEmg.hpp" +#include "iHallEffect.hpp" +#include "iHeartRate.hpp" +#include "iHumidity.hpp" +#include "iLight.hpp" +#include "iLineFinder.hpp" +#include "iMoisture.hpp" +#include "iMotion.hpp" +#include "iPressure.hpp" +#include "iTemperature.hpp" diff --git a/include/interfaces/new_interfaces.i b/include/interfaces/new_interfaces.i new file mode 100644 index 00000000..85d0e1a3 --- /dev/null +++ b/include/interfaces/new_interfaces.i @@ -0,0 +1,69 @@ +#ifdef SWIGPYTHON +%module pyupm_new_interfaces +#else +%module new_interfaces +#endif + +#ifdef SWIGJAVA + %include + %interface_impl (upm::iClock); + %interface_impl (upm::iCollision); + %interface_impl (upm::iDistance); + %interface_impl (upm::iDistanceInterrupter); + %interface_impl (upm::iEC); + %interface_impl (upm::iHallEffect); + %interface_impl (upm::iHeartRate); + %interface_impl (upm::iHumidity); + %interface_impl (upm::iLight); + %interface_impl (upm::iLineFinder); + %interface_impl (upm::iMoisture); + %interface_impl (upm::iMotion); + %interface_impl (upm::iPressure); + %interface_impl (upm::iTemperature); +#endif + +%{ + #include "iClock.hpp" + #include "iCollision.hpp" + #include "iDistance.hpp" + #include "iDistanceInterrupter.hpp" + #include "iEC.hpp" + #include "iHallEffect.hpp" + #include "iHeartRate.hpp" + #include "iHumidity.hpp" + #include "iLight.hpp" + #include "iLineFinder.hpp" + #include "iMoisture.hpp" + #include "iMotion.hpp" + #include "iPressure.hpp" + #include "iTemperature.hpp" +%} + +%include "iClock.hpp" +%include "iCollision.hpp" +%include "iDistance.hpp" +%include "iDistanceInterrupter.hpp" +%include "iEC.hpp" +%include "iHallEffect.hpp" +%include "iHeartRate.hpp" +%include "iHumidity.hpp" +%include "iLight.hpp" +%include "iLineFinder.hpp" +%include "iMoisture.hpp" +%include "iMotion.hpp" +%include "iPressure.hpp" +%include "iTemperature.hpp" + +/* Java-specific SWIG syntax */ +#ifdef SWIGJAVA +%pragma(java) jniclasscode=%{ + static { + try { + System.loadLibrary("javaupm_interfaces"); + } catch (UnsatisfiedLinkError e) { + System.err.println("Native code library failed to load. \n" + e); + System.exit(1); + } + } +%} +#endif diff --git a/src/hcsr04/CMakeLists.txt b/src/hcsr04/CMakeLists.txt index 48c0c2ad..16784b25 100644 --- a/src/hcsr04/CMakeLists.txt +++ b/src/hcsr04/CMakeLists.txt @@ -4,5 +4,6 @@ upm_mixed_module_init (NAME hcsr04 C_SRC hcsr04.c CPP_HDR hcsr04.hpp CPP_SRC hcsr04.cxx + IFACE_HDR iDistance.hpp CPP_WRAPS_C REQUIRES mraa utilities-c) diff --git a/src/hcsr04/hcsr04.i b/src/hcsr04/hcsr04.i index 62d2f344..6427d205 100644 --- a/src/hcsr04/hcsr04.i +++ b/src/hcsr04/hcsr04.i @@ -1,7 +1,17 @@ +#ifdef SWIGPYTHON +%module (package="pyupm_new_interfaces") hcsr04 +#endif + +%import "interfaces/new_interfaces.i" + %include "../common_top.i" /* BEGIN Java syntax ------------------------------------------------------- */ #ifdef SWIGJAVA +%typemap(javaimports) SWIGTYPE %{ +import upm_new_interfaces.*; +%} + JAVA_JNI_LOADLIBRARY(javaupm_hcsr04) #endif /* END Java syntax */ diff --git a/src/lidarlitev3/CMakeLists.txt b/src/lidarlitev3/CMakeLists.txt index 08d92aa7..01027b93 100644 --- a/src/lidarlitev3/CMakeLists.txt +++ b/src/lidarlitev3/CMakeLists.txt @@ -2,4 +2,5 @@ upm_mixed_module_init (NAME lidarlitev3 DESCRIPTION "Optical Distance Measurement Sensor" CPP_HDR lidarlitev3.hpp CPP_SRC lidarlitev3.cxx + IFACE_HDR iDistance.hpp REQUIRES mraa) diff --git a/src/lidarlitev3/lidarlitev3.i b/src/lidarlitev3/lidarlitev3.i index 176f0bcf..a957029a 100644 --- a/src/lidarlitev3/lidarlitev3.i +++ b/src/lidarlitev3/lidarlitev3.i @@ -1,7 +1,17 @@ +#ifdef SWIGPYTHON +%module (package="pyupm_new_interfaces") lidarlitev3 +#endif + +%import "interfaces/new_interfaces.i" + %include "../common_top.i" /* BEGIN Java syntax ------------------------------------------------------- */ #ifdef SWIGJAVA +%typemap(javaimports) SWIGTYPE %{ +import upm_new_interfaces.*; +%} + JAVA_JNI_LOADLIBRARY(javaupm_lidarlitev3) #endif /* END Java syntax */ diff --git a/src/maxsonarez/CMakeLists.txt b/src/maxsonarez/CMakeLists.txt index feae3914..3248bb0e 100644 --- a/src/maxsonarez/CMakeLists.txt +++ b/src/maxsonarez/CMakeLists.txt @@ -2,4 +2,5 @@ set (libname "maxsonarez") set (libdescription "MaxSonar EZ Family of Ultrasonic Rangers") set (module_src ${libname}.cxx) set (module_hpp ${libname}.hpp) +set (module_iface iDistance.hpp) upm_module_init(mraa) diff --git a/src/mb704x/CMakeLists.txt b/src/mb704x/CMakeLists.txt index 33892a77..40c77684 100644 --- a/src/mb704x/CMakeLists.txt +++ b/src/mb704x/CMakeLists.txt @@ -4,6 +4,7 @@ upm_mixed_module_init (NAME mb704x C_SRC mb704x.c CPP_HDR mb704x.hpp CPP_SRC mb704x.cxx + IFACE_HDR iDistance.hpp FTI_SRC mb704x_fti.c CPP_WRAPS_C REQUIRES mraa utilities-c) diff --git a/src/mb704x/mb704x.i b/src/mb704x/mb704x.i index f88ca406..b31b679e 100644 --- a/src/mb704x/mb704x.i +++ b/src/mb704x/mb704x.i @@ -1,7 +1,17 @@ +#ifdef SWIGPYTHON +%module (package="pyupm_new_interfaces") mb704x +#endif + +%import "interfaces/new_interfaces.i" + %include "../common_top.i" /* BEGIN Java syntax ------------------------------------------------------- */ #ifdef SWIGJAVA +%typemap(javaimports) SWIGTYPE %{ +import upm_new_interfaces.*; +%} + JAVA_JNI_LOADLIBRARY(javaupm_mb704x) #endif /* END Java syntax */ diff --git a/src/rfr359f/CMakeLists.txt b/src/rfr359f/CMakeLists.txt index bb7baba5..d870e06b 100644 --- a/src/rfr359f/CMakeLists.txt +++ b/src/rfr359f/CMakeLists.txt @@ -2,4 +2,5 @@ set (libname "rfr359f") set (libdescription "Infrared Distance Interrupter") set (module_src ${libname}.cxx) set (module_hpp ${libname}.hpp) +set (module_iface iDistance.hpp) upm_module_init(mraa) diff --git a/src/urm37/CMakeLists.txt b/src/urm37/CMakeLists.txt index a73ad44b..a44e705b 100644 --- a/src/urm37/CMakeLists.txt +++ b/src/urm37/CMakeLists.txt @@ -4,6 +4,7 @@ upm_mixed_module_init (NAME urm37 C_SRC urm37.c CPP_HDR urm37.hpp CPP_SRC urm37.cxx + IFACE_HDR iDistance.hpp FTI_SRC urm37_fti.c CPP_WRAPS_C REQUIRES mraa utilities-c) diff --git a/src/urm37/urm37.i b/src/urm37/urm37.i index 16cd9fc5..9b13c3d9 100644 --- a/src/urm37/urm37.i +++ b/src/urm37/urm37.i @@ -1,7 +1,16 @@ +#ifdef SWIGPYTHON +%module (package="pyupm_new_interfaces") urm37 +#endif + +%import "interfaces/new_interfaces.i" %include "../common_top.i" /* BEGIN Java syntax ------------------------------------------------------- */ #ifdef SWIGJAVA +%typemap(javaimports) SWIGTYPE %{ +import upm_new_interfaces.*; +%} + JAVA_JNI_LOADLIBRARY(javaupm_urm37) #endif /* END Java syntax */