upm/examples/java/CMakeLists.txt

262 lines
9.0 KiB
CMake
Raw Permalink Normal View History

# The purpose of this CMakeLists.txt is to compile all listed JAVA examples
# during build time (ensuring that ALL examples compile against their
# dependency JAVA packages).
find_package(Java REQUIRED)
include(UseJava)
# Add a JAVA example target for the provided JAVA source file which depends
# on UPM JAVA targets.
#
# Usage:
# add_example(example_class_name upm_target_dependency_list)
#
# Parameters:
# example_class_name: JAVA class name. This name MUST match the JAVA
# example file name.
# <example_class_name>.java
# upm_target_dependency_list: One or more UPM library targets. This
# function assumes a javaupm_<target> also exists.
#
# Examples:
# # Creates SensorFooExample JAVA target, depends on target: sensorfoo,
# # and will add upm_sensorfoo.jar to the javac classpath.
# add_example(SensorFooExample sensorfoo)
#
# # Creates SensorFooExample JAVA target, depends on targets: sensorfoo,
# # and core and will add both upm_sensorfoo.jar and upm_core.jar
# # to the javac classpath.
# add_example(SensorFooExample "sensorfoo;core"")
#
function(add_example example_class_name dependency_list)
set(example_file "${example_class_name}.java")
# Build a list of all dependency jar files
set(jar_file_list "")
# Build a list of all dependency java target names
set(java_targets_list "")
# Iterate over the dependencies
foreach(dependency ${dependency_list})
set(java_target "javaupm_${dependency}")
# Append to the targets list
list(APPEND java_targets_list ${java_target})
# If a dependency target does NOT exist, print a warning and skip
if (NOT TARGET ${java_target})
message(STATUS "Example ${example_file} is missing a required CMake target (${java_target}), skipping...")
return()
endif()
# Get the jar for this java_target (saved as a property)
get_target_property(jar_file ${java_target} JAR_FILE_ABSOLUTE)
# Append to the jar list
list(APPEND jar_file_list ${jar_file})
endforeach()
# Add the jar/s
add_jar(${example_class_name} SOURCES ${example_file} INCLUDE_JARS ${jar_file_list})
# Add a dependency from this jar to all dependency java targets
add_dependencies(${example_class_name} ${java_targets_list})
endfunction()
add_example(A110X_Example a110x)
add_example(A110X_intr_Example a110x)
add_example(Ad8232_Example ad8232)
add_example(ADC121C021_Example adc121c021)
add_example(Ads1015_Example "ads1x15;core")
add_example(Ads1115_Example ads1x15)
add_example(Adxl345_Example adxl345)
add_example(AM2315_Example am2315)
add_example(APA102_Example apa102)
add_example(Apds9002_Example apds9002)
add_example(BH1750_Example bh1750)
add_example(BISS0001_Example biss0001)
add_example(BMA250E_Example bma250e)
add_example(BMC150_Example bmx055)
add_example(BME280_Example "bmp280;core")
add_example(BMG160_Example bmg160)
add_example(BMI055_Example bmx055)
add_example(BMI160_Example bmi160)
add_example(BMM150_Example bmm150)
add_example(BMP280_Example "bmp280;core")
add_example(BMPX8X_Example "bmpx8x;core")
add_example(BMX055_Example bmx055)
add_example(BNO055_Example bno055)
add_example(Button_Example button)
add_example(Button_intr_Example button)
add_example(Buzzer_Example buzzer)
add_example(CJQ4435_Example cjq4435)
add_example(Collision_Example collision)
add_example(CWLSXXA_Example cwlsxxa)
add_example(DFREC_Example dfrec)
add_example(DFRORP_Example dfrorp)
add_example(DS1307_Example ds1307)
add_example(ECEZO_Example ecezo)
add_example(ECS1030_Example ecs1030)
add_example(EHR_Example ehr)
add_example(Emg_Example emg)
add_example(ENC03R_Example enc03r)
add_example(ES08A_Example "servo;core")
add_example(FlexSensor_Example flex)
add_example(Gp2y0a_Example gp2y0a)
add_example(GroveButton_Example grove)
add_example(GroveButton_intr_Example grove)
add_example(GroveEHR_Example groveehr)
add_example(GroveEmg_Example groveemg)
add_example(GroveGsr_Example grovegsr)
add_example(GroveLEDBar_Example my9221)
add_example(GroveLED_Example grove)
add_example(GroveLed_multi_Example grove)
add_example(GroveLight_Example grove)
add_example(GroveLineFinder_Example grovelinefinder)
add_example(GroveMD_Example grovemd)
add_example(GroveMoisture_Example grovemoisture)
add_example(GroveMQ3_Example gas)
add_example(GroveMQ9_Example gas)
add_example(GroveO2_Example groveo2)
add_example(GroveQTouch_Example at42qt1070)
add_example(GroveRelay_Example grove)
add_example(GroveRotary_Example grove)
add_example(GROVESCAM_Example grovescam)
add_example(GroveSlide_Example grove)
add_example(GroveSpeaker_Example grovespeaker)
add_example(GroveTemp_Example grove)
add_example(GroveVDiv_Example grovevdiv)
add_example(GroveWater_Example grovewater)
add_example(GroveWFS_Example grovewfs)
add_example(Gsr_Example gsr)
add_example(GUVAS12D_Example guvas12d)
add_example(H3LIS331DL_Example h3lis331dl)
add_example(HCSR04_Example hcsr04)
add_example(HKA5_Example hka5)
add_example(HM11_Example hm11)
add_example(Hmc5883l_Example hmc5883l)
add_example(HMTRP_Example hmtrp)
add_example(HP20x_Example hp20x)
add_example(HTU21D_Example htu21d)
add_example(Itg3200_Example itg3200)
add_example(Jhd1313m1_Example jhd1313m1)
add_example(Jhd1313m1_lcd_Example jhd1313m1)
add_example(Joystick12_Example joystick12)
add_example(KX122_Example kx122)
add_example(Lcm1602_i2c_Example lcm1602)
add_example(Lcm1602_parallel_Example lcm1602)
add_example(LDT0028_Example ldt0028)
add_example(LE910_Example uartat)
add_example(LED_Example led)
add_example(Light_Example light)
add_example(LineFinder_Example linefinder)
add_example(LIS2DS12_Example lis2ds12)
add_example(LoL_Example lol)
add_example(LSM303AGR_Example lsm303agr)
add_example(LSM303D_Example lsm303d)
add_example(LSM303DLH_Example lsm303dlh)
add_example(LSM6DS3H_Example lsm6ds3h)
add_example(LSM6DSL_Example lsm6dsl)
add_example(M24LR64E_Example m24lr64e)
add_example(MAX30100_Example max30100)
add_example(MAX31855_Example max31855)
add_example(MAX44000_Example max44000)
add_example(MAX5487_Example max5487)
add_example(MAXds3231m_Example maxds3231m)
add_example(MB704X_Example mb704x)
add_example(MCP2515_Example mcp2515)
add_example(MCP2515_TXRX_Example mcp2515)
add_example(MD_Example md)
add_example(MHZ16_Example mhz16)
add_example(Microphone_Example mic)
add_example(MMA7361_Example mma7361)
add_example(MMA7455_Example mma7455)
add_example(MMA7660_Example mma7660)
add_example(Moisture_Example moisture)
add_example(MPL3115A2_Example mpl3115a2)
add_example(MPR121_Example mpr121)
add_example(MPU9150_Example mpu9150)
add_example(MQ2_Example gas)
add_example(MQ303A_Example mq303a)
add_example(MQ5_Example gas)
add_example(MS5803_Example ms5803)
add_example(NMEAGPS_Example nmea_gps)
add_example(NMEAGPS_I2C_Example nmea_gps)
add_example(NRF24L01_receiver_Example nrf24l01)
add_example(NRF24L01_transmitter_Example nrf24l01)
add_example(NUNCHUCK_Example nunchuck)
add_example(O2_Example o2)
add_example(OTP538U_Example otp538u)
add_example(P9813_Example p9813)
add_example(PPD42NS_Example ppd42ns)
add_example(Pulsensor_Example pulsensor)
add_example(Relay_Example relay)
add_example(RFR359F_Example rfr359f)
add_example(RN2903_Example rn2903)
add_example(RN2903_P2P_RX_Example rn2903)
add_example(RN2903_P2P_TX_Example rn2903)
add_example(RotaryEncoder_Example rotaryencoder)
add_example(Rotary_Example rotary)
add_example(RPR220_Example rpr220)
add_example(RPR220_intr_Example rpr220)
add_example(SCAM_Example scam)
add_example(SensorTemplate_Example sensortemplate)
add_example(SHT1X_Example sht1x)
add_example(Slide_Example slide)
add_example(SM130_Example sm130)
add_example(Speaker_Example speaker)
add_example(SpeakerPWM_Example speaker)
add_example(SSD1308_oled_Example lcd)
add_example(SSD1327_oled_Example lcd)
add_example(ST7735_Example st7735)
add_example(TEAMS_Example teams)
add_example(Temperature_Example temperature)
add_example(TEX00_Example tex00)
add_example(Th02_Example th02)
add_example(TM1637_Example tm1637)
add_example(TP401_Example gas)
add_example(TSL2561_Example tsl2561)
add_example(TTP223_Example ttp223)
add_example(ULN200XA_Example uln200xa)
add_example(VDiv_Example vdiv)
add_example(VEML6070_Example veml6070)
add_example(Water_Example water)
add_example(WaterLevelSensor_Example waterlevel)
add_example(WFS_Example wfs)
add_example(WT5001_Example wt5001)
add_example(YG1006_Example yg1006)
add_example(ZFM20_Example zfm20)
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>
2017-02-06 14:59:00 -08:00
if(SWIG_VERSION VERSION_GREATER 3.0.8)
add_example(BME280_Interface_Example "bmp280;core")
add_example(IMS_Example "ims;core")
add_example(RHUSB_Example "rhusb;core")
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>
2017-02-06 14:59:00 -08:00
endif()
ozw: Rework and add some device specific drivers and examples. This commit reworks ozw somewhat and adds some device specific drivers with examples. All of these drivers are kept in the UPM ozw library. The OZW class has been reworked to make it a proper singleton, since the OpenZWave::Manager() it depends on is already a singleton. This avoids issues such as opening and initializing OpenZWave multiple times. A new, relatively thin base class, ozwInterface is also now present. This class wraps some basic functionality, and handles initialization of the OZW base class. It is intended to be inherited by device driver classes. It operates on a node id for a device. Each OZW device is referenced by a node id, which does not change unless the device is removed (and possibly re-added) to a Z-Wave network. Finally, a series of device specific drivers have been implemented. These provide basic functionality to monitor and in some cases control the operation of a Z-Wave device. They are the following: ozwdump - This is a fake 'device' driver that initializes an OZW network and dumps information on all of the nodes (devices) present. Along with each node, available information on each valueid associated with that node is also printed. This fake device and it's examples replace the original ozw example. aeotecss6 - Aeotec Smart Switch 6. This device allows control of the switch, as well as reporting of information the switch makes available, such as current consumption, volts, watts, and accumulated energy use (kWh). aeotecsdg2 - Aeotec Smart Dimmer Gen 2. This device is similar to the Smart Switch 6, but also provides dimming functionality. It also provides information on energy use. aeotecdw2e - Aeotec Door/Window Sensor 2nd Edition. This device is a magnetic switch with an embedded tamper switch used to detect the opening/closing of windows and doors. This is a battery powered device. aeotecdsb09104 - Aeotec Home Energy Monitor. This device is intended to be installed at the MAINS or Breaker box. It reports current and cumulative energy consumption. tzemt400 - Trane TZEMT400 Thermostat. This device is a thermostat with Z-Wave functionality. The variant tested was the TZEMT400BB32MAA. The driver reports various information on the status of the thermostat, as well as the current measured temperature. Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-06 13:25:39 -06:00
if (OPENZWAVE_FOUND)
add_example(AeotecDSB09104_Example ozw)
add_example(AeotecDW2E_Example ozw)
add_example(AeotecSDG2_Example ozw)
add_example(AeotecSS6_Example ozw)
add_example(TZEMT400_Example ozw)
endif()
if (MODBUS_FOUND)
add_example(H803X_Example h803x)
endif()
if (BACNET_FOUND)
add_example(E50HX_Example e50hx)
add_example(T8100_Example t8100)
add_example(TB7300_Example tb7300)
endif()
if (JPEG_FOUND)
add_example(VCAP_Example vcap)
ozw: Rework and add some device specific drivers and examples. This commit reworks ozw somewhat and adds some device specific drivers with examples. All of these drivers are kept in the UPM ozw library. The OZW class has been reworked to make it a proper singleton, since the OpenZWave::Manager() it depends on is already a singleton. This avoids issues such as opening and initializing OpenZWave multiple times. A new, relatively thin base class, ozwInterface is also now present. This class wraps some basic functionality, and handles initialization of the OZW base class. It is intended to be inherited by device driver classes. It operates on a node id for a device. Each OZW device is referenced by a node id, which does not change unless the device is removed (and possibly re-added) to a Z-Wave network. Finally, a series of device specific drivers have been implemented. These provide basic functionality to monitor and in some cases control the operation of a Z-Wave device. They are the following: ozwdump - This is a fake 'device' driver that initializes an OZW network and dumps information on all of the nodes (devices) present. Along with each node, available information on each valueid associated with that node is also printed. This fake device and it's examples replace the original ozw example. aeotecss6 - Aeotec Smart Switch 6. This device allows control of the switch, as well as reporting of information the switch makes available, such as current consumption, volts, watts, and accumulated energy use (kWh). aeotecsdg2 - Aeotec Smart Dimmer Gen 2. This device is similar to the Smart Switch 6, but also provides dimming functionality. It also provides information on energy use. aeotecdw2e - Aeotec Door/Window Sensor 2nd Edition. This device is a magnetic switch with an embedded tamper switch used to detect the opening/closing of windows and doors. This is a battery powered device. aeotecdsb09104 - Aeotec Home Energy Monitor. This device is intended to be installed at the MAINS or Breaker box. It reports current and cumulative energy consumption. tzemt400 - Trane TZEMT400 Thermostat. This device is a thermostat with Z-Wave functionality. The variant tested was the TZEMT400BB32MAA. The driver reports various information on the status of the thermostat, as well as the current measured temperature. Signed-off-by: Jon Trulson <jtrulson@ics.com>
2016-07-06 13:25:39 -06:00
endif()
if (NOT ANDROID)
add_example(StepMotor_Example stepmotor)
endif ()