diff --git a/.gitignore b/.gitignore index 7c677d5..bbb274a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .idea - +*.iml +.gradle +build +out diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..3e8101f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,15 @@ +language: java +jdk: + - openjdk11 +before_install: + - chmod +x gradlew +notifications: + email: + on_success: always + on_failure: always + recipients: + - bren@juanantonio.info +script: + - ./gradlew clean test +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/README.md b/README.md index 3d42f16..cc68bbf 100644 --- a/README.md +++ b/README.md @@ -1,91 +1,114 @@ # ev3dev-lang-java /examples -This repository store a set of examples ready to use with the +This repository store a set of examples ready to use with the ev3dev-lang-java libraries. -` Take a look the following examples to discover some features included with this Java project. **EV3Dev-lang-Java:** - ev3dev.misc -- [BumperCar](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/misc/BumperCar.java) -- [BumperCar2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/misc/BumperCar2.java) +- [BumperCar](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/misc/BumperCar.java) +- [BumperCar2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/misc/BumperCar2.java) - ev3dev.robotics.tts -- [TTSDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/robotics/tts/TTSDemo.java) -- [TTSDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/robotics/tts/TTSDemo2.java) +- [TTSDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/robotics/tts/TTSDemo.java) +- [TTSDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/robotics/tts/TTSDemo2.java) - ev3dev.actuators -- [LCDDrawIconsTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawIconsTest.java) -- [LCDDrawImagesTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawImagesTest.java) -- [LCDDrawLinesTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawLinesTest.java) -- [LCDDrawRectanglesTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawRectanglesTest.java) -- [LCDFontTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDFontTest.java) -- [LCDTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDTest.java) -- [LCDWriteTextTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDWriteTextTest.java) -- [SoundDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/SoundDemo.java) +- [LargeMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo.java) +- [LargeMotorDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo2.java) +- [LargeMotorDemo3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo3.java) +- [LargeMotorStopModesExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorStopModesExample.java) +- [MediumMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorDemo.java) +- [MediumMotorStopModesExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorStopModesExample.java) +- [MotorTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEventTest.java) +- [MotorEventTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorTest.java) +- [MultipleMotorsDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsDemo.java) +- [MultipleMotorsStopDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsStopDemo.java) +- [NXTRegulatedMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorDemo.java) +- [NXTRegulatedMotorStopModesExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorStopModesExample.java) +- [RegulatedMotorRotateDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateDemo.java) +- [RegulatedMotorRotateToDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateToDemo.java) +- [UnregulatedMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo.java) +- [UnregulatedMotorDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo2.java) +- [UnregulatedMotorDemo3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo3.java) +- [UnregulatedMotorDemo4](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo4.java) +- [UnregulatedMutilpleMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMutilpleMotorDemo.java) - ev3dev.actuators.ev3 -- [LEDExample](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LEDExample.java) -- ev3dev.actuators.lego.motors -- [LargeMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo.java) -- [LargeMotorDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo2.java) -- [MediumMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorDemo.java) -- [MotorEventTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEventTest.java) -- [MultipleMotorsDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsDemo.java) -- [MultipleMotorsStopDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsStopDemo.java) -- [RegulatedMotorRotateDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateDemo.java) -- [RegulatedMotorRotateDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateDemo.java) -- [RegulatedMotorRotateToDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateToDemo.java) -- [UnregulatedMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo.java) -- [UnregulatedMotorDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo2.java) -- [UnregulatedMutilpleMotorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMutilpleMotorDemo.java) +- [LCDCircles](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDCircles.java) +- [LCDDrawIconsTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawIconsTest.java) +- [LCDDrawImagesTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawImagesTest.java) +- [LCDDrawLinesTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawLinesTest.java) +- [LCDDrawRectanglesAnimationTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesAnimationTest.java) +- [LCDDrawRectanglesTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesTest.java) +- [LCDFontTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDFontTest.java) +- [LCDTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDTest.java) +- [LCDWriteTextTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDWriteTextTest.java) +- [LEDExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LEDExample.java) +- [SoundDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/SoundDemo.java) - ev3dev.sensors -- [BatteryDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/BatteryDemo.java) -- [ButtonExample](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample.java) +- [BatteryDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/BatteryDemo.java) +- [ButtonExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample.java) +- [ButtonExample2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample2.java) +- [ButtonListenersExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonListenersExample.java) - ev3dev.sensors.ev3 -- [ColorSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo.java) -- [ColorSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo2.java) -- [ColorSensorDemo3](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo3.java) -- [ColorSensorMultipleDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorMultipleDemo.java) -- [GyroSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo.java) -- [GyroSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo2.java) -- [GyroSensorDemo3](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo3.java) -- [IRSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo.java) -- [IRSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo2.java) -- [IRSensorDemo3](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo3.java) -- [TouchSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/TouchSensorDemo.java) -- [USSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo.java) -- [USSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo2.java) -- ev3dev.hardware -- [PlatformTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/ev3dev/hardware/PlatformTest.java) +- [ColorSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo.java) +- [ColorSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo2.java) +- [ColorSensorDemo3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo3.java) +- [ColorSensorMultipleDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorMultipleDemo.java) +- [GyroSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo.java) +- [GyroSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo2.java) +- [GyroSensorDemo3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo3.java) +- [IRSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo.java) +- [IRSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo2.java) +- [IRSensorDemo3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo3.java) +- [IRSensorDemo4](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo4.java) +- [TouchSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/TouchSensorDemo.java) +- [USSensorDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo.java) +- [USSensorDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo2.java) +- [USSensorMultipleDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorMultipleDemo.java) +- ev3dev.sensors.mindsensors +- [AbsoluteIMUAccelerationTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUAccelerationTest.java) +- [AbsoluteIMUCompassTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUCompassTest.java) +- [AbsoluteIMUGyroTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUGyroTest.java) +- [AbsoluteIMUMagneticTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUMagneticTest.java) +- [AbsoluteIMUTiltTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUTiltTest.java) +- [CreatePhotoDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoDemo.java) +- [CreatePhotoEV3Demo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoEV3Demo.java) +- [FaceRecognitionDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo.java) +- [FaceRecognitionDemo2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo2.java) +- [RecordVideoDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RecordVideoDemo.java) +- [RectanglesDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RectanglesDemo.java) +- [TrackObjectsDemo](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/TrackObjectsDemo.java) +- ev3dev.utils +- [BrickmanUtilsTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/ev3dev/utils/BrickmanUtilsTest.java) **lejos-commons:** - lejos.commons.subsumption -- [BumperCar](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/BumperCar.java) -- [DriveForward](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/DriveForward.java) -- [HitWall](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/HitWall.java) +- [BumperCar](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/BumperCar.java) +- [DriveForward](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/DriveForward.java) +- [HitWall](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/HitWall.java) **lejos-navigation:** - lejos.robotics.navigation -- [PilotConfig](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/PilotConfig.java) -- [PilotConfig2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/PilotConfig2.java) -- [DifferentialPilotStopTest](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/DifferentialPilotStopTest.java) -- [DifferentialPilotTest1](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/DifferentialPilotTest1.java) -- [DifferentialPilotTest9](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/DifferentialPilotTest9.java) -- [MoveControllerTest1](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/MoveControllerTest1.java) -- [MoveControllerTest2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/MoveControllerTest2.java) -- [NavigatorTest1](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest1.java) -- [NavigatorTest2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest2.java) -- [NavigatorTest3](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest3.java) -- [NavigatorTest4](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest4.java) +- [CreateMapExample](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/mapping/CreateMapExample.java) +- [OriginalFinder](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/mapping/OriginalFinder.java) +- [PilotConfig](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/PilotConfig.java) +- [PilotConfig2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/PilotConfig2.java) +- [DifferentialPilotStopTest](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/DifferentialPilotStopTest.java) +- [DifferentialPilotTest1](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/DifferentialPilotTest1.java) +- [DifferentialPilotTest9](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/pilot/DifferentialPilotTest9.java) +- [MoveControllerTest1](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/MoveControllerTest1.java) +- [MoveControllerTest2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/MoveControllerTest2.java) +- [MoveControllerTest3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/MoveControllerTest3.java) +- [NavigatorTest1](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest1.java) +- [NavigatorTest2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest2.java) +- [NavigatorTest3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest3.java) +- [NavigatorTest4](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/navigator/NavigatorTest4.java) - lejos.robotics.objectdetection -- [FeatureAvoider](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/feature/FeatureAvoider.java) -- [FeatureAvoider2](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/feature/FeatureAvoider2.java) -- [FeatureAvoider3](https://github.com/ev3dev-lang-java/examples/blob/develop/ev3dev-lang-java/src/main/java/lejos/navigation/feature/FeatureAvoider3.java) +- [FeatureAvoider](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/feature/FeatureAvoider.java) +- [FeatureAvoider2](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/feature/FeatureAvoider2.java) +- [FeatureAvoider3](https://github.com/ev3dev-lang-java/examples/blob/master/ev3dev-lang-java/src/main/java/lejos/navigation/feature/FeatureAvoider3.java) -` -``` -gradle init --type java-library -`` diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..3645b70 --- /dev/null +++ b/build.gradle @@ -0,0 +1,40 @@ +//Gradle file library ev3dev-lang-java / examples +//Author: Juan Antonio Breña Moral + +buildscript { + repositories { + jcenter() + mavenCentral() + maven { + url "https://plugins.gradle.org/m2/" + } + maven { url "https://jitpack.io" } + } +} + +subprojects { + version = "2.4.16" + + repositories { + mavenCentral() + maven { url 'https://jitpack.io' } + } + + apply plugin: 'java' + apply plugin: 'eclipse' + apply plugin: 'idea' + + dependencies { + implementation("com.github.ev3dev-lang-java:ev3dev-lang-java:2.5.3") + implementation("com.github.ev3dev-lang-java:lejos-navigation:0.2.0") + + implementation("ch.qos.logback:logback-classic:1.2.3") + } + + //Compile + compileJava { + sourceCompatibility = 11 + targetCompatibility = 11 + } +} + diff --git a/config.gradle b/config.gradle new file mode 100644 index 0000000..8d450d9 --- /dev/null +++ b/config.gradle @@ -0,0 +1,16 @@ +import java.nio.file.Paths + +// Project configuration +brick.pref { + // Brick connection parameters // + sshHost = "10.0.0.89" + sshUser = "robot" + sshPassword = "maker" + + // Do not use stuff embedded in manifest (for easier main class changes) + useEmbeddedPaths = false +} + +brick.paths { + wrapperDir = "/home/robot/examples" +} diff --git a/demo-2.4.16/.gitignore b/demo-2.4.16/.gitignore new file mode 100644 index 0000000..f433c3b --- /dev/null +++ b/demo-2.4.16/.gitignore @@ -0,0 +1,3 @@ +build + + diff --git a/demo-2.4.16/build.gradle b/demo-2.4.16/build.gradle new file mode 100644 index 0000000..2054adf --- /dev/null +++ b/demo-2.4.16/build.gradle @@ -0,0 +1,22 @@ +version = '0.1.0-SNAPSHOT' + +dependencies { + //implementation group: 'com.github.ev3dev-lang-java', name: 'ev3dev-lang-java', version: '2.4.16' + + implementation "com.github.ev3dev-lang-java:ev3dev-lang-java:0.7.0" + //implementation("com.github.ev3dev-lang-java:RPLidar4J:v0.3.2-SNAPSHOT") + //implementation group: 'javazoom', name: 'jlayer', version: '1.0.1' + + annotationProcessor("org.projectlombok:lombok:1.18.8") + compileOnly("org.projectlombok:lombok:1.18.8") + testCompileOnly("org.projectlombok:lombok:1.18.8") +} + +jar { + manifest { + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) + } +} diff --git a/demo-2.4.16/config.gradle b/demo-2.4.16/config.gradle new file mode 100644 index 0000000..489ba42 --- /dev/null +++ b/demo-2.4.16/config.gradle @@ -0,0 +1,5 @@ +// Subproject configuration +brick.pref { + // Main class // + mainClass = "examples.Demo" +} diff --git a/demo-2.4.16/lombok.config b/demo-2.4.16/lombok.config new file mode 100644 index 0000000..f4809e2 --- /dev/null +++ b/demo-2.4.16/lombok.config @@ -0,0 +1,2 @@ +lombok.nonNull.exceptionType = IllegalArgumentException +lombok.log.fieldName = LOGGER diff --git a/demo-2.4.16/src/main/java/examples/Demo.java b/demo-2.4.16/src/main/java/examples/Demo.java new file mode 100644 index 0000000..68e4ed4 --- /dev/null +++ b/demo-2.4.16/src/main/java/examples/Demo.java @@ -0,0 +1,43 @@ +package examples; + +import ev3dev.sensors.Button; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +public class Demo { + + public static Logger LOGGER = LoggerFactory.getLogger(Demo.class); + + private static DisplayAnimations displayAnimations; + + private static HttpConnector connector; + + public static void main(String[] args) throws IOException { + + String anotherIP = ""; + if (args.length > 0) { + anotherIP = args[0]; + LOGGER.info(anotherIP); + }else { + throw new RuntimeException("No parameter"); + } + + connector = new HttpConnector(anotherIP); + + displayAnimations = new DisplayAnimations(connector); + displayAnimations.showJavaLogo(); + + //Button.LEFT.addKeyListener( + // new MyKeyListener(Button.LEFT, displayAnimations)); + //Button.RIGHT.addKeyListener( + // new MyKeyListener( Button.RIGHT, displayAnimations)); + Button.ENTER.addKeyListener( + new MyKeyListener( Button.ENTER, displayAnimations)); + + //Web Interface + new WebControl(displayAnimations).run(); + } + +} \ No newline at end of file diff --git a/demo-2.4.16/src/main/java/examples/DisplayAnimations.java b/demo-2.4.16/src/main/java/examples/DisplayAnimations.java new file mode 100644 index 0000000..45f854c --- /dev/null +++ b/demo-2.4.16/src/main/java/examples/DisplayAnimations.java @@ -0,0 +1,94 @@ +package examples; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import ev3dev.utils.JarResource; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.nio.Buffer; + +public class DisplayAnimations { + + public static Logger LOGGER = LoggerFactory.getLogger(DisplayAnimations.class); + + private static GraphicsLCD lcd = LCD.getInstance(); + + private final HttpConnector connector; + + private BufferedImage image; + + public DisplayAnimations(HttpConnector httpConnector) { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + this.connector = httpConnector; + + try { + image = JarResource.loadImage(JarResource.JAVA_DUKE_IMAGE_NAME); + + }catch (IOException e){ + LOGGER.error(e.getLocalizedMessage()); + } + + } + + public void showJavaLogo() { + + if(LOGGER.isDebugEnabled()) { + LOGGER.debug("Showing Java logo on EV3 Brick"); + } + + lcd.drawImage(image, 35, 10, 0); + lcd.refresh(); + } + + public void sin() { + + for ( int i = 0; i <= lcd.getWidth(); i++ ) { + int x = i; + int y = 50 + (int) (Math.sin(i) * 5); + + clear(); + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + lcd.fillRect(x, y, 20, 20); + lcd.refresh(); + Delay.msDelay(10); + } + + connector.pingLeft(); + } + + public void sin2() { + + for ( int i = lcd.getWidth()-20; i >= 0-20; i-- ) { + int x = i; + int y = 50 + (int) (Math.sin(i) * 5); + + clear(); + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + lcd.fillRect(x, y, 20, 20); + lcd.refresh(); + Delay.msDelay(10); + } + + connector.pingRight(); + } + + public void clear(){ + //lcd.setColor(Color.WHITE); + lcd.setColor(255,255,255); + lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + } + +} diff --git a/demo-2.4.16/src/main/java/examples/HttpConnector.java b/demo-2.4.16/src/main/java/examples/HttpConnector.java new file mode 100644 index 0000000..2110dc4 --- /dev/null +++ b/demo-2.4.16/src/main/java/examples/HttpConnector.java @@ -0,0 +1,147 @@ +package examples; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpConnector { + + public static Logger LOGGER = LoggerFactory.getLogger(HttpConnector.class); + + private final String anotherIp; + + //private final HttpClient httpClient; + //private final HttpRequest leftRequest; + //private final HttpRequest rightRequest; + private HttpURLConnection leftcon; + private HttpURLConnection rightcon; + + public HttpConnector(String anotherIp) { + + LOGGER.info("Creating Http Connector"); + + this.anotherIp = anotherIp; + + + //httpClient = HttpClient.newBuilder().build(); + //leftRequest = HttpRequest.newBuilder() + // .uri(URI.create("http://" + anotherIp + ":9000/left")) + // .build(); + //rightRequest = HttpRequest.newBuilder() + // .uri(URI.create("http://" + anotherIp + ":9000/right")) + // .build(); + + try { + URL leftURL = new URL("http://" + anotherIp + ":9000/left"); + URL rightURL = new URL("http://" + anotherIp + ":9000/right"); + leftcon = (HttpURLConnection) leftURL.openConnection(); + leftcon.setRequestMethod("GET"); + rightcon = (HttpURLConnection) rightURL.openConnection(); + rightcon.setRequestMethod("GET"); + leftcon.setConnectTimeout(5000); + leftcon.setReadTimeout(5000); + rightcon.setConnectTimeout(5000); + rightcon.setReadTimeout(5000); + } catch(IOException e) { + LOGGER.error(e.getLocalizedMessage()); + } + + } + + private final String USER_AGENT = "Mozilla/5.0"; + + // HTTP GET request + public void pingLeft() { + + try { + + LOGGER.info("Left ping"); + + //String url = "http://www.google.com/search?q=mkyong"; + URL obj = new URL("http://" + anotherIp + ":9000/left"); + + //URL obj = new URL(url); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setConnectTimeout(5000); + con.setReadTimeout(5000); + // optional default is GET + con.setRequestMethod("GET"); + + //add request header + con.setRequestProperty("User-Agent", USER_AGENT); + + int responseCode = con.getResponseCode(); + LOGGER.info("Sending 'GET' request to URL : {}" ,obj.toString()); + LOGGER.info("Response Code : " + responseCode); + + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + //print result + LOGGER.info(response.toString()); + + }catch(RuntimeException | IOException e) { + LOGGER.error(e.getLocalizedMessage()); + } + + } + + + + // HTTP GET request + public void pingRight() { + + try { + + LOGGER.info("Right ping"); + + //String url = "http://www.google.com/search?q=mkyong"; + URL obj = new URL("http://" + anotherIp + ":9000/right"); + + //URL obj = new URL(url); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setConnectTimeout(5000); + con.setReadTimeout(5000); + + // optional default is GET + con.setRequestMethod("GET"); + + //add request header + con.setRequestProperty("User-Agent", USER_AGENT); + + int responseCode = con.getResponseCode(); + LOGGER.info("Sending 'GET' request to URL : {}", obj.toString()); + LOGGER.info("Response Code : " + responseCode); + + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + + //print result + LOGGER.info(response.toString()); + + }catch(StringIndexOutOfBoundsException | IOException e) { + LOGGER.error(e.getLocalizedMessage()); + } + } + +} diff --git a/demo-2.4.16/src/main/java/examples/MyKeyListener.java b/demo-2.4.16/src/main/java/examples/MyKeyListener.java new file mode 100644 index 0000000..2572e55 --- /dev/null +++ b/demo-2.4.16/src/main/java/examples/MyKeyListener.java @@ -0,0 +1,43 @@ +package examples; + +import lejos.hardware.Key; +import lejos.hardware.KeyListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MyKeyListener implements KeyListener { + + public static Logger LOGGER = LoggerFactory.getLogger(MyKeyListener.class); + + private final Key registeredForKey; + + private final DisplayAnimations displayAnimations; + + public MyKeyListener( + final Key registeredForKey, + final DisplayAnimations displayAnimations) { + this.registeredForKey = registeredForKey; + this.displayAnimations = displayAnimations; + } + + @Override + public void keyPressed(final Key key) { + LOGGER.info("PRESSED"); + + if(key.getName().equals("LEFT")){ + displayAnimations.sin(); + displayAnimations.clear(); + + } else if (key.getName().equals("RIGHT")){ + displayAnimations.sin2(); + displayAnimations.clear(); + } else { + System.exit(0); + } + } + + @Override + public void keyReleased(final Key key) { + + } +} \ No newline at end of file diff --git a/demo-2.4.16/src/main/java/examples/WebControl.java b/demo-2.4.16/src/main/java/examples/WebControl.java new file mode 100644 index 0000000..5b389b4 --- /dev/null +++ b/demo-2.4.16/src/main/java/examples/WebControl.java @@ -0,0 +1,107 @@ +package examples; + +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; + +@Slf4j +public class WebControl { + + //public static Logger LOGGER = LoggerFactory.getLogger(WebControl.class); + + public static final int PORT = 9000; + private ServerSocket ss; + private Socket sock; + + private final DisplayAnimations displayAnimations; + + public WebControl(DisplayAnimations displayAnimations) throws IOException { + LOGGER.info("Creating a simple API"); + + ss = new ServerSocket(PORT); + + this.displayAnimations = displayAnimations; + } + + public void run() throws IOException { + for (;;) { + sock = ss.accept(); + InputStream is = sock.getInputStream(); + OutputStream os = sock.getOutputStream(); + + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + PrintStream ps = new PrintStream(os); + + for (;;) { + String cmd = br.readLine(); + if (cmd == null) + break; + String reply = execute(cmd); + if (reply != null) + ps.println(reply); + else { + br.close(); + ps.close(); + break; + } + } + + } + } + + public String execute(String cmd) { + String[] tokens = cmd.split(" "); + + if (tokens.length > 1 && tokens[0].equals("GET")) { + + if (tokens[1].equals("/stop")) { + LOGGER.info("{}", tokens[1]); + System.exit(0); + } else if (tokens[1].equals("/left")) { + + LOGGER.info("{}", tokens[1]); + displayAnimations.sin(); + displayAnimations.clear(); + displayAnimations.showJavaLogo(); + + } else if (tokens[1].equals("/right")) { + + LOGGER.info("{}", tokens[1]); + displayAnimations.sin2(); + displayAnimations.clear(); + displayAnimations.showJavaLogo(); + } + + return "HTTP/1.1 200 OK\r\n\r\n" + readFile() + "\r\n"; + } + return null; + } + + private String readFile() { + + StringBuffer document = new StringBuffer(); + + try { + + InputStream in = this.getClass().getClassLoader().getResourceAsStream("index.html"); + + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in), 1); + String line; + while ((line = bufferedReader.readLine()) != null) { + document.append(line); + } + in.close(); + + }catch (IOException io) { + LOGGER.error(io.getLocalizedMessage()); + } + + return document.toString(); + + } + +} \ No newline at end of file diff --git a/demo-2.4.16/src/main/resources/index.html b/demo-2.4.16/src/main/resources/index.html new file mode 100644 index 0000000..a0aba93 --- /dev/null +++ b/demo-2.4.16/src/main/resources/index.html @@ -0,0 +1 @@ +OK \ No newline at end of file diff --git a/demo-2.4.16/src/main/resources/logback.xml b/demo-2.4.16/src/main/resources/logback.xml new file mode 100644 index 0000000..bcb0923 --- /dev/null +++ b/demo-2.4.16/src/main/resources/logback.xml @@ -0,0 +1,30 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + log-${byDay}.txt + true + + %-4relative [%thread] %-5level %logger{35} - %msg%n + + + + + + + + + + + + + + diff --git a/demo/.gitignore b/demo/.gitignore index 25dd93d..f433c3b 100644 --- a/demo/.gitignore +++ b/demo/.gitignore @@ -1,5 +1,3 @@ -.idea -.gradle build -*.iml + diff --git a/demo/build.gradle b/demo/build.gradle index e3434c4..a4dbc9d 100644 --- a/demo/build.gradle +++ b/demo/build.gradle @@ -1,61 +1,20 @@ version = '0.1.0-SNAPSHOT' -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' - -repositories { - mavenCentral() - maven { url "https://jitpack.io" } -} - dependencies { -<<<<<<< HEAD - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.5.0") - compile("com.github.ev3dev-lang-java:RPLidar4J:v0.3.0-SNAPSHOT") -======= - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.3-SNAPSHOT") - compile("com.github.ev3dev-lang-java:RPLidar4J:v0.3.2-SNAPSHOT") ->>>>>>> develop -} + implementation group: 'com.github.ev3dev-lang-java', name: 'ev3dev-lang-java', version: '0.7.0' + implementation group: 'com.github.ev3dev-lang-java', name: 'RPLidar4J', version: 'v0.3.2-SNAPSHOT' + implementation group: 'javazoom', name: 'jlayer', version: '1.0.1' -//Compile -compileJava { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + annotationProcessor("org.projectlombok:lombok:1.18.8") + compileOnly("org.projectlombok:lombok:1.18.8") + testCompileOnly("org.projectlombok:lombok:1.18.8") } - -//Jar jar { - baseName = "${rootProject.name}" manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) } } - -//Fat Jar -task fatJar(type: Jar) { - baseName = "${rootProject.name}" + "-all" - manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") - } - from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } - with jar -} - -//Deploy on Brick -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "org.hidetake:gradle-ssh-plugin:2.0.0" - } -} -apply plugin: 'org.hidetake.ssh' - -apply from: 'deploy.gradle' - diff --git a/demo/config.gradle b/demo/config.gradle new file mode 100644 index 0000000..22f8267 --- /dev/null +++ b/demo/config.gradle @@ -0,0 +1,5 @@ +// Subproject configuration +brick.pref { + // Main class // + mainClass = "examples.DemoStop" +} diff --git a/demo/deploy.gradle b/demo/deploy.gradle deleted file mode 100644 index 43a7a21..0000000 --- a/demo/deploy.gradle +++ /dev/null @@ -1,36 +0,0 @@ - -remotes { - ev3dev { - host = '192.168.1.180' - user = 'robot' - password = 'maker' - } -} - -task deploy << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-all-" + version + ".jar", into: "/home/robot/" - } - } -} -deploy.dependsOn clean, fatJar - -task remoteRun << { - ssh.run { - session(remotes.ev3dev) { -<<<<<<< HEAD - println "java -Djava.library.path=/usr/lib/jni/ -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar" - execute "java -Djava.library.path=/usr/lib/jni/ -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar" -======= - println "java -server -Djava.library.path=/usr/lib/jni/ -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar" - execute "java -server -Djava.library.path=/usr/lib/jni/ -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar" ->>>>>>> develop - } - } -} - -task deployAndRun << { - -} -deployAndRun.dependsOn deploy, remoteRun \ No newline at end of file diff --git a/demo/gradle/wrapper/gradle-wrapper.jar b/demo/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b5166da..0000000 Binary files a/demo/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/demo/gradle/wrapper/gradle-wrapper.properties b/demo/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 0830501..0000000 --- a/demo/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Wed Mar 22 22:35:59 GMT 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip diff --git a/demo/gradlew b/demo/gradlew deleted file mode 100755 index 91a7e26..0000000 --- a/demo/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/demo/gradlew.bat b/demo/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/demo/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/demo/lombok.config b/demo/lombok.config new file mode 100644 index 0000000..f4809e2 --- /dev/null +++ b/demo/lombok.config @@ -0,0 +1,2 @@ +lombok.nonNull.exceptionType = IllegalArgumentException +lombok.log.fieldName = LOGGER diff --git a/demo/settings.gradle b/demo/settings.gradle deleted file mode 100644 index 0a383dd..0000000 --- a/demo/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'demo' diff --git a/demo/src/main/java/examples/Demo.java b/demo/src/main/java/examples/Demo.java deleted file mode 100644 index ab52c29..0000000 --- a/demo/src/main/java/examples/Demo.java +++ /dev/null @@ -1,243 +0,0 @@ -package examples; - -import ev3dev.actuators.Sound; -import ev3dev.actuators.motors.EV3LargeRegulatedMotor; -import ev3dev.sensors.Battery; -import ev3dev.sensors.ev3.EV3IRSensor; -import ev3dev.sensors.slamtec.RPLidarA1; -import ev3dev.sensors.slamtec.RPLidarA1ServiceException; -import ev3dev.sensors.slamtec.RPLidarProviderListener; -import ev3dev.sensors.slamtec.model.Scan; -import ev3dev.sensors.slamtec.model.ScanDistance; -import examples.utils.JarResource; -import lejos.hardware.port.MotorPort; -import lejos.hardware.port.SensorPort; -import lejos.robotics.SampleProvider; -import lejos.utility.Delay; -import lombok.extern.slf4j.Slf4j; - -import java.io.File; - -public @Slf4j class Demo { - - private static EV3LargeRegulatedMotor mA = null; - private static EV3LargeRegulatedMotor mB = null; - - private static EV3IRSensor irSensor = null; - private static SampleProvider spIR = null; - - private static Battery battery; - private static final float VOLTAGE_THRESHOLD = 7.5f; - - private static final String USBPort = "/dev/ttyUSB0"; - private static RPLidarA1 lidar = null; - - private static final String SOUND_FILE = "R2D2a.wav"; - - private static final int ITERATIONS_THRESHOLD = 20; - - public static void main(String[] args) throws Exception { - - JarResource.export("/" + SOUND_FILE); - - configRobot(); - - float voltage = battery.getVoltage(); - log.debug("Voltage: {}", voltage); - - int iterations = 0; - - playSound(); - - while(voltage >= VOLTAGE_THRESHOLD) { - -<<<<<<< HEAD - forward(); - final Scan scan = lidar.scan(); - - log.info("Measures: {}", scan.getDistances().size()); -======= - - final Scan scan = lidar.scan(); ->>>>>>> develop - - voltage = battery.getVoltage(); - log.debug("Voltage: {}", voltage); - - iterations++; - if(iterations > ITERATIONS_THRESHOLD){ - break; - } - } - - lidar.close(); - JarResource.delete(SOUND_FILE); - stop(); - log.info("End demo"); - System.exit(0); - } - - private static boolean isBetterLeft(final Scan scan) { - - final Double leftAverage = scan.getDistances() - .stream() - .filter((measure) -> measure.getQuality() > 1) - .filter((measure) -> (measure.getAngle() >= 181)) - .mapToDouble(ScanDistance::getDistance) - .average() - .getAsDouble(); - log.debug("Left Average: {}", leftAverage); - - final Double rightAverage = scan.getDistances() - .stream() - .filter((measure) -> measure.getQuality() > 1) - .filter((measure) -> (measure.getAngle() <= 180)) - .mapToDouble(ScanDistance::getDistance) - .average() - .getAsDouble(); - log.debug("Right Average: {}", rightAverage); - - if(leftAverage <= rightAverage){ - return true; - } - return false; - } - - private static void configRobot() throws RPLidarA1ServiceException { - - mA = new EV3LargeRegulatedMotor(MotorPort.A); - mB = new EV3LargeRegulatedMotor(MotorPort.B); - mA.setSpeed(300); - mB.setSpeed(300); - -<<<<<<< HEAD - irSensor = new EV3IRSensor(SensorPort.S1); -======= - irSensor = new EV3IRSensor(SensorPort.S2); ->>>>>>> develop - spIR = irSensor.getDistanceMode(); - battery = Battery.getInstance(); - lidar = new RPLidarA1(USBPort); - lidar.init(); - lidar.addListener(new RPLidarProviderListener() { - -<<<<<<< HEAD - @Override - public Scan scanFinished(final Scan scan) { - //log.info("Iteration: {}, Measures: {}", counter.incrementAndGet(), scan.getDistances().size()); - log.info("Measures: {}", scan.getDistances().size()); -======= - //TODO Review interface. - @Override - public Scan scanFinished(Scan scan) { - log.info("Scan Measures: {}", scan.getDistances().size()); - - ->>>>>>> develop - if (!isSafeForward(scan)) { - - stop(); - - playSound(); - - backward(); - -<<<<<<< HEAD - if(isBetterLeft(scan)){ - turnLeft(); - }else{ - turnRight(); - } - - stop(); - } -======= - if (isBetterLeft(scan)){ - turnLeft(); - }else { - turnRight(); - } - - } - - forward(); - - ->>>>>>> develop - return scan; - } - }); - } - - private static boolean isSafeForward(final Scan scan){ - - final long counter = scan.getDistances() - .stream() - .filter((measure) -> measure.getQuality() > 1) - .filter((measure) -> (measure.getAngle() >= 350 || measure.getAngle() <= 10)) - .filter((measure) -> measure.getDistance() <= 50) - .count(); - - scan.getDistances() - .stream() - .filter((measure) -> measure.getQuality() > 1) - .filter((measure) -> (measure.getAngle() >= 350 || measure.getAngle() <= 10)) - .filter((measure) -> measure.getDistance() <= 50) - .forEach(System.out::println); - - //TODO Move to another event - final float[] sample = new float[spIR.sampleSize()]; - spIR.fetchSample(sample, 0); -<<<<<<< HEAD - final int distanceValue = (int) sample[0]; -======= - final int distanceValue = (int)sample[0]; - - log.debug("Counter: {}", counter); ->>>>>>> develop - log.debug("IR Distance: {}", distanceValue); - - if ((counter > 5) || (distanceValue < 50)){ - return false; - } - return true; - } - - private static void playSound(){ - Sound sound = Sound.getInstance(); - sound.playSample(new File(SOUND_FILE)); - } - - private static void stop(){ - log.info("Stop"); - mA.stop(); - mB.stop(); - } - - private static void forward(){ - log.info("Forward"); - mA.forward(); - mB.forward(); - Delay.msDelay(500); - } - - private static void backward(){ - log.info("Backward"); - mA.backward(); - mB.backward(); - Delay.msDelay(1000); - } - - private static void turnRight() { - mA.forward(); - mB.stop(); - Delay.msDelay(1000); - } - - private static void turnLeft() { - mA.stop(); - mB.forward(); - Delay.msDelay(1000); - } - -} diff --git a/demo/src/main/java/examples/Demo2.java b/demo/src/main/java/examples/Demo2.java deleted file mode 100644 index c49cd69..0000000 --- a/demo/src/main/java/examples/Demo2.java +++ /dev/null @@ -1,197 +0,0 @@ -package examples; - -/** - * Demonstration of the Behavior subsumption classes. - * - * Requires a wheeled vehicle with two independently controlled - * motors connected to motor ports B and C, and - * an EV3 IR sensor connected to port 4; - * - * @author Brian Bagnall and Lawrie Griffiths, modified by Roger Glassey - * - */ -/* -public class EV3BumperCar { - static RegulatedMotor leftMotor;// = Motor.B; - static RegulatedMotor rightMoto;//r = Motor.C; - //static IRSensor sensor; - - // Use these definitions instead if your motors are inverted - // static RegulatedMotor leftMotor = MirrorMotor.invertMotor(Motor.A); - //static RegulatedMotor rightMotor = MirrorMotor.invertMotor(Motor.C); - - public static void main(String[] args) { - - leftMotor.resetTachoCount(); - rightMotor.resetTachoCount(); - leftMotor.rotateTo(0); - rightMotor.rotateTo(0); - leftMotor.setSpeed(400); - rightMotor.setSpeed(400); - leftMotor.setAcceleration(800); - rightMotor.setAcceleration(800); - //sensor = new IRSensor(); - //sensor.setDaemon(true); - //sensor.start(); - Behavior b1 = new DriveForward(); - Behavior b2 = new DetectWall(); - Behavior[] behaviorList = - { - b1, b2 - }; - Arbitrator arbitrator = new Arbitrator(behaviorList); - arbitrator.go(); - } -} - - -class IRSensor extends Thread { - EV3IRSensor ir = new EV3IRSensor(SensorPort.S4); - SampleProvider sp = ir.getDistanceMode(); - public int control = 0; - public int distance = 255; - - IRSensor() { - - } - - public void run() { - while (true) { - float [] sample = new float[sp.sampleSize()]; - control = ir.getRemoteCommand(0); - sp.fetchSample(sample, 0); - distance = (int)sample[0]; - System.out.println("Control: " + control + " Distance: " + distance); - - } - - } -} - - -class DriveForward implements Behavior { - - private boolean _suppressed = false; - - public boolean takeControl() { - - if (Button.readButtons() != 0) - { - _suppressed = true; - EV3BumperCar.leftMotor.stop(); - EV3BumperCar.rightMotor.stop(); - System.out.println("Button pressed"); - if ((Button.waitForAnyPress() & Button.ID_ESCAPE) != 0) { - System.exit(1); - } - System.out.println("Button pressed 2"); - System.out.println("Button released"); - } - return true; // this behavior always wants control. - } - - public void suppress() - { - _suppressed = true;// standard practice for suppress methods - } - - public void action() - { - _suppressed = false; - //EV3BumperCar.leftMotor.forward(); - //EV3BumperCar.rightMotor.forward(); - while (!_suppressed) - { - //EV3BumperCar.leftMotor.forward(); - //EV3BumperCar.rightMotor.forward(); - switch(EV3BumperCar.sensor.control) - { - case 0: - EV3BumperCar.leftMotor.setSpeed(400); - EV3BumperCar.rightMotor.setSpeed(400); - EV3BumperCar.leftMotor.stop(true); - EV3BumperCar.rightMotor.stop(true); - break; - case 1: - EV3BumperCar.leftMotor.setSpeed(400); - EV3BumperCar.rightMotor.setSpeed(400); - EV3BumperCar.leftMotor.forward(); - EV3BumperCar.rightMotor.forward(); - break; - case 2: - EV3BumperCar.leftMotor.backward(); - EV3BumperCar.rightMotor.backward(); - break; - case 3: - EV3BumperCar.leftMotor.setSpeed(200); - EV3BumperCar.rightMotor.setSpeed(200); - EV3BumperCar.leftMotor.forward(); - EV3BumperCar.rightMotor.backward(); - break; - case 4: - EV3BumperCar.leftMotor.setSpeed(200); - EV3BumperCar.rightMotor.setSpeed(200); - EV3BumperCar.leftMotor.backward(); - EV3BumperCar.rightMotor.forward(); - break; - - - } - Thread.yield(); //don't exit till suppressed - } - //EV3BumperCar.leftMotor.stop(true); - //EV3BumperCar.rightMotor.stop(true); - //EV3BumperCar.leftMotor. - } -} - - -class DetectWall implements Behavior -{ - - public DetectWall() - { - //touch = new TouchSensor(SensorPort.S1); - //sonar = new UltrasonicSensor(SensorPort.S3); - } - - - private boolean checkDistance() - { - - int dist = EV3BumperCar.sensor.distance; - if (dist < 30) { - return true; - } else { - return false; - } - } - - public boolean takeControl() - { - return checkDistance(); - } - - public void suppress() - { - //Since this is highest priority behavior, suppress will never be called. - } - - public void action() - { - EV3BumperCar.leftMotor.rotate(-180, true);// start Motor.B rotating backward - EV3BumperCar.rightMotor.rotate(-180); // rotate C farther to make the turn - if ((System.currentTimeMillis() & 0x1) != 0) - { - EV3BumperCar.leftMotor.rotate(-180, true);// start Motor.B rotating backward - EV3BumperCar.rightMotor.rotate(180); // rotate C farther to make the turn - } - else - { - EV3BumperCar.rightMotor.rotate(-180, true);// start Motor.B rotating backward - EV3BumperCar.leftMotor.rotate(180); // rotate C farther to make the turn - } - } - -} -*/ \ No newline at end of file diff --git a/demo/src/main/java/examples/DemoStop.java b/demo/src/main/java/examples/DemoStop.java deleted file mode 100644 index c9264b0..0000000 --- a/demo/src/main/java/examples/DemoStop.java +++ /dev/null @@ -1,94 +0,0 @@ -package examples; - -import ev3dev.actuators.motors.EV3LargeRegulatedMotor; -import ev3dev.actuators.motors.EV3MediumRegulatedMotor; -import ev3dev.sensors.Battery; -import ev3dev.sensors.ev3.EV3GyroSensor; -import ev3dev.sensors.slamtec.RPLidarA1; -import ev3dev.sensors.slamtec.model.Scan; -import lejos.hardware.port.MotorPort; -import lejos.hardware.port.SensorPort; -import lejos.robotics.SampleProvider; -import lejos.utility.Delay; -import lombok.extern.slf4j.Slf4j; - -public @Slf4j class DemoStop { - - private static EV3LargeRegulatedMotor mA = null; - private static EV3MediumRegulatedMotor mB = null; - - private static EV3GyroSensor gyroSensor = null; - private static Battery battery; - private static final float VOLTAGE_THRESHOLD = 8000; - - private static final String USBPort = "/dev/ttyUSB0"; - private static RPLidarA1 lidar = null; - - public static void main(String[] args) throws Exception { - - mA = new EV3LargeRegulatedMotor(MotorPort.A); - mB = new EV3MediumRegulatedMotor(MotorPort.B); - mA.setSpeed(500); - mB.setSpeed(500); - - mA.stop(); - mB.stop(); - System.exit(0); - - gyroSensor = new EV3GyroSensor(SensorPort.S1); - final SampleProvider sp = gyroSensor.getAngleAndRateMode(); - battery = Battery.getInstance(); - lidar = new RPLidarA1(USBPort); - lidar.init(); - - while(battery.getVoltage() >= VOLTAGE_THRESHOLD) { - - final Scan scan = lidar.scan(); - long counter = scan.getDistances() - .stream() - .filter(measure -> { - if((measure.getAngle() >= 345) || (measure.getAngle() <=15)) { - if(measure.getDistance() <= 50) { - return true; - } - return false; - } - return false; - }) - .count(); - - if(counter < 5){ - mA.forward(); - mB.forward(); - }else{ - mA.stop(); - mB.stop(); - mA.setSpeed(200); - mA.forward(); - - //Control loop - while(true){ - float [] sample = new float[sp.sampleSize()]; - sp.fetchSample(sample, 0); - int value = (int)sample[0]; - - log.info("Gyro angle/rate: {}", value); - - if(value >= 45){ - log.info("Rotated 45 degrees"); - mA.stop(); - break; - } - - } - } - - } - - Delay.msDelay(2000); - mA.stop(); - mB.stop(); - System.exit(0); - } - -} diff --git a/demo/src/main/java/examples/InternetStreamingDemo.java b/demo/src/main/java/examples/InternetStreamingDemo.java new file mode 100644 index 0000000..4db38ee --- /dev/null +++ b/demo/src/main/java/examples/InternetStreamingDemo.java @@ -0,0 +1,121 @@ +package examples; + +import ev3dev.sensors.Button; +import javazoom.jl.decoder.JavaLayerException; +import javazoom.jl.player.Player; +import lejos.hardware.Key; +import lejos.hardware.KeyListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +public class InternetStreamingDemo { + + private static final Logger LOGGER = LoggerFactory.getLogger(InternetStreamingDemo.class); + + static List playersList = new ArrayList<>(); + + private static Player player; + + public static void main(String[] args) { + + LOGGER.info("Example of Radio Streaming with EV3 Brick"); + + registerEV3ButtonEvents(); + + final List radioStationList = getRadioStations(); + final String radioStation = getRadioStation(radioStationList); + + playRadioStation(radioStation); + + Button.UP.waitForPress(); + } + + private static void registerEV3ButtonEvents() { + + LOGGER.debug("Registering key listeners..."); + + Button.ESCAPE.addKeyListener(new KeyListener() { + + @Override + public void keyPressed(Key key) { + LOGGER.info("Program finished."); + System.exit(0); + } + + @Override + public void keyReleased(Key key) { + //Empty + } + + }); + + Button.ENTER.addKeyListener(new KeyListener() { + + @Override + public void keyPressed(Key key) { + + final List radioStationList = getRadioStations(); + final String radioStation = getRadioStation(radioStationList); + + playRadioStation(radioStation); + } + + @Override + public void keyReleased(Key key) { + //Empty + } + + }); + + } + + private static List getRadioStations() { + + return Arrays.asList( + "http://kpft.org:8000/kpfa_16", + //"http://sumerki.su:8000/Sumerki16", + "http://killradio.org:8000/killradio16.mp3" + //"http://trentradio.ca:8800/lo-fi" + ); + + } + + private static String getRadioStation(final List radioStationList) { + + final Random randomGenerator = new Random(); + final int index = randomGenerator.nextInt(radioStationList.size()); + final String radioStation = radioStationList.get(index); + LOGGER.debug("Radio Station selectee: {}", radioStation); + + return radioStation; + } + + private static void playRadioStation(final String radioStation) { + + try { + final URLConnection urlConnection = new URL(radioStation).openConnection(); + urlConnection.connect(); + + if(player != null) { + player.close(); + } + + player = new Player(urlConnection.getInputStream ()); + player.play(); + + } catch (JavaLayerException | IOException e) { + LOGGER.error(e.getLocalizedMessage(), e); + } catch (Exception e) { + LOGGER.error(e.getLocalizedMessage(), e); + } + } + +} \ No newline at end of file diff --git a/demo/src/main/java/examples/utils/JarResource.java b/demo/src/main/java/examples/utils/JarResource.java deleted file mode 100644 index 5c5b827..0000000 --- a/demo/src/main/java/examples/utils/JarResource.java +++ /dev/null @@ -1,54 +0,0 @@ -package examples.utils; - -import lombok.extern.slf4j.Slf4j; - -import java.io.*; - -public @Slf4j class JarResource { - - /** - * Export a resource embedded into a Jar file to the local file path. - * - * @param resourceName ie.: "/SmartLibrary.dll" - * @return The path to the exported resource - * @throws Exception - */ - public static String export(final String resourceName) throws IOException { - InputStream stream = null; - OutputStream resStreamOut = null; - String jarFolder; - try { - stream = JarResource.class.getResourceAsStream(resourceName);//note that each / is a directory down in the "jar tree" been the jar the root of the tree - if(stream == null) { - throw new Exception("Cannot get resource \"" + resourceName + "\" from Jar file."); - } - - int readBytes; - byte[] buffer = new byte[4096]; - jarFolder = new File(JarResource.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath().replace('\\', '/'); - resStreamOut = new FileOutputStream(jarFolder + resourceName); - while ((readBytes = stream.read(buffer)) > 0) { - resStreamOut.write(buffer, 0, readBytes); - } - } catch (Exception ex) { - throw new IOException(ex); - } finally { - stream.close(); - resStreamOut.close(); - } - - return jarFolder + resourceName; - } - - public static void delete(final String resourceName){ - final File file = new File(resourceName); - if(file.delete()){ - log.info("{} is deleted!", file.getName()); - }else{ - log.trace("Delete operation is failed."); - } - - } - -} - diff --git a/demo/src/main/resources/META-INF/MANIFEST.MF b/demo/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index b7d7ef6..0000000 --- a/demo/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,10 +0,0 @@ -Manifest-Version: 1.0 -Implementation-Title: EV3Dev-lang-java-demo -Implementation-Version: 0.1.0-SNAPSHOT -Implementation-Vendor: Juan Antonio Breña Moral -<<<<<<< HEAD:demo/META-INF/MANIFEST.MF -Main-Class: examples.IRSensorDemo -======= -Main-Class: examples.Demo ->>>>>>> develop:demo/src/main/resources/META-INF/MANIFEST.MF - diff --git a/ev3dev-lang-java/LICENSE b/ev3dev-lang-java/LICENSE deleted file mode 100644 index 853b46d..0000000 --- a/ev3dev-lang-java/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 - -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. diff --git a/ev3dev-lang-java/build.gradle b/ev3dev-lang-java/build.gradle index 24c3001..5baae76 100644 --- a/ev3dev-lang-java/build.gradle +++ b/ev3dev-lang-java/build.gradle @@ -1,74 +1,25 @@ -//Gradle file library ev3dev-lang-java / examples -//Author: Juan Antonio Breña Moral - version = '0.6.1' -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' - repositories { mavenCentral() maven { url 'https://jitpack.io' } } dependencies { - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1") - compile("com.github.ev3dev-lang-java:lejos-navigation:v0.1.0") - compile("ch.qos.logback:logback-classic:1.2.3") -} - -//Wrapper -task wrapper(type: Wrapper) { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '3.5' -} + implementation("ch.qos.logback:logback-classic:1.2.3") + annotationProcessor("org.projectlombok:lombok:1.18.8") + compileOnly("org.projectlombok:lombok:1.18.8") + testCompileOnly("org.projectlombok:lombok:1.18.8") -//Compile -compileJava { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 } -//Jar jar { - baseName = "${rootProject.name}" manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) } } - -buildscript { - repositories { - jcenter() - } - dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.0' - } -} - -//Fat Jar -apply plugin: 'com.github.johnrengelman.shadow' - -task fatJar << { - -} -fatJar.dependsOn shadowJar - - -//Deploy on Brick -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "org.hidetake:gradle-ssh-plugin:2.0.0" - } -} -apply plugin: 'org.hidetake.ssh' - -apply from: 'deploy.gradle' diff --git a/ev3dev-lang-java/config.gradle b/ev3dev-lang-java/config.gradle index 1f94435..345ac50 100644 --- a/ev3dev-lang-java/config.gradle +++ b/ev3dev-lang-java/config.gradle @@ -1,10 +1,5 @@ - -remotes { - ev3dev { - host = '10.0.1.3' - user = 'robot' - password = 'maker' - } +// Subproject configuration +brick.pref { + // Main class // + mainClass = "ev3dev.misc.BumperCar" } - -drlegobrick@gmail.com diff --git a/ev3dev-lang-java/deploy.gradle b/ev3dev-lang-java/deploy.gradle deleted file mode 100644 index 96c44a4..0000000 --- a/ev3dev-lang-java/deploy.gradle +++ /dev/null @@ -1,69 +0,0 @@ - -task deploy << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-" + version + "-all.jar", into: "/home/robot/" - } - } -} -deploy.dependsOn clean, fatJar - -task remoteRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - execute "java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - } - } -} - -task remoteSudoRun << { - ssh.run { - session(remotes.ev3dev) { - println "echo -e \"maker\" | sudo -S java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all" + ".jar" - execute "echo -e \"maker\" | sudo -S java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all" + ".jar" - } - } -} - -task remoteProfilingRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - execute "java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - } - } -} - -task remoteProfilingSudoRun << { - ssh.run { - session(remotes.ev3dev) { - println "echo -e \"maker\" | sudo -S java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - execute "echo -e \"maker\" | sudo -S java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - } - } -} - -task deployAndRun << { - -} -deployAndRun.dependsOn deploy, remoteRun - - -task deployAndSudoRun << { - -} -deployAndSudoRun.dependsOn deploy, remoteSudoRun - -task deployAndProfilingRun << { - -} -deployAndProfilingRun.dependsOn deploy, remoteProfilingRun - -task deployAndProfilingSudoRun << { - -} -deployAndProfilingSudoRun.dependsOn deploy, remoteProfilingSudoRun - -apply from: 'config.gradle' - diff --git a/ev3dev-lang-java/gradle/wrapper/gradle-wrapper.properties b/ev3dev-lang-java/gradle/wrapper/gradle-wrapper.properties index a5ce781..eded362 100644 --- a/ev3dev-lang-java/gradle/wrapper/gradle-wrapper.properties +++ b/ev3dev-lang-java/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Jun 20 08:33:12 BST 2017 +#Wed Jul 12 21:43:59 BST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip diff --git a/ev3dev-lang-java/gradlew b/ev3dev-lang-java/gradlew deleted file mode 100755 index 4453cce..0000000 --- a/ev3dev-lang-java/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/ev3dev-lang-java/gradlew.bat b/ev3dev-lang-java/gradlew.bat deleted file mode 100644 index e95643d..0000000 --- a/ev3dev-lang-java/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/ev3dev-lang-java/lombok.config b/ev3dev-lang-java/lombok.config new file mode 100644 index 0000000..f4809e2 --- /dev/null +++ b/ev3dev-lang-java/lombok.config @@ -0,0 +1,2 @@ +lombok.nonNull.exceptionType = IllegalArgumentException +lombok.log.fieldName = LOGGER diff --git a/ev3dev-lang-java/settings.gradle b/ev3dev-lang-java/settings.gradle deleted file mode 100644 index dc39b88..0000000 --- a/ev3dev-lang-java/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'ev3dev-lang-java' diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawIconsTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawIconsTest.java deleted file mode 100644 index 4fb2dd3..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawIconsTest.java +++ /dev/null @@ -1,29 +0,0 @@ -package ev3dev.actuators; - -import lejos.hardware.lcd.GraphicsLCD; -import lejos.robotics.Color; - -import java.awt.*; - -public class LCDDrawIconsTest { - - public static GraphicsLCD lcd = LCD.getInstance(); - - public static void main(final String[] args){ - - System.out.println("EV3 LCD Example"); - - clear(); - lcd.setColor(Color.BLACK); - lcd.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 70)); - lcd.drawString("\u2665", 50, 50, 0); - lcd.drawString("\u2661", 70, 70, 0); - lcd.refresh(); - } - - public static void clear(){ - lcd.setColor(Color.WHITE); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - } - -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawImagesTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawImagesTest.java deleted file mode 100644 index 37fa61f..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawImagesTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package ev3dev.actuators; - -import ev3dev.utils.JarResource; -import lejos.hardware.lcd.GraphicsLCD; -import lejos.robotics.Color; - -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; - -public class LCDDrawImagesTest { - - public static GraphicsLCD lcd = LCD.getInstance(); - - public static void main(final String[] args) throws IOException { - - System.out.println("EV3 LCD Example"); - - clear(); - - JarResource.export("cross.gif"); - JarResource.export("nought.gif"); - - BufferedImage img = null; - Image image = ImageIO.read(new File("nought.gif")); - try { - img = ImageIO.read(new File("cross.gif")); - } catch (IOException e) { - - } - - lcd.setColor(Color.BLACK); - //LCD.drawImage(img, new AffineTransform(1f, 0f, 0f, 1f, 0, 0), null); - //LCD.drawImage(image, 40,40, null); - lcd.drawImage(image,40,40,0); - //LCD.drawImage(img, 0,0, Color.WHITE, null); - lcd.drawImage(img, 0,0,0); - - lcd.refresh(); - - JarResource.delete("cross.gif"); - JarResource.delete("nought.gif"); - - } - - public static void clear(){ - lcd.setColor(Color.WHITE); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - } - -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawLinesTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawLinesTest.java deleted file mode 100644 index 703b3dc..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawLinesTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package ev3dev.actuators; - -import lejos.hardware.lcd.GraphicsLCD; -import lejos.robotics.Color; - -public class LCDDrawLinesTest { - - public static GraphicsLCD lcd = LCD.getInstance(); - - public static void main(final String[] args){ - - System.out.println("EV3 LCD Example"); - - clear(); - lcd.setColor(Color.BLACK); - lcd.drawLine(0, 0, 50, 50); - lcd.drawLine(0, 0, 30, 60); - lcd.refresh(); - } - - public static void clear(){ - lcd.setColor(Color.WHITE); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - } - -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawRectanglesTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawRectanglesTest.java deleted file mode 100644 index ec6ed4a..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDDrawRectanglesTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package ev3dev.actuators; - -import lejos.hardware.lcd.GraphicsLCD; -import lejos.robotics.Color; - -public class LCDDrawRectanglesTest { - - public static GraphicsLCD lcd = LCD.getInstance(); - - public static void main(final String[] args){ - - System.out.println("EV3 LCD Example"); - - clear(); - lcd.setColor(Color.BLACK); - lcd.drawRect(0, 0, 20, 20); - lcd.drawRect(40, 40, 80, 80); - lcd.refresh(); - } - - public static void clear(){ - lcd.setColor(Color.WHITE); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - } - -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDTest.java deleted file mode 100644 index 048fcd4..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDTest.java +++ /dev/null @@ -1,27 +0,0 @@ -package ev3dev.actuators; - -import lejos.hardware.lcd.GraphicsLCD; -import lejos.robotics.Color; - -public class LCDTest { - - public static GraphicsLCD lcd = LCD.getInstance(); - - public static void main(final String[] args){ - - System.out.println("EV3 LCD Example"); - - lcd.setColor(Color.BLACK); - lcd.drawRect(0,0, lcd.getWidth(), lcd.getHeight()); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - - lcd.setColor(Color.WHITE); - lcd.drawString("Hello World", (lcd.getWidth()/ 2)-30, lcd.getHeight()/2, 0); - lcd.refresh(); - } - - public static void clear(){ - lcd.setColor(Color.WHITE); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - } -} \ No newline at end of file diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDWriteTextTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDWriteTextTest.java deleted file mode 100644 index 1cd17db..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDWriteTextTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package ev3dev.actuators; - -import lejos.hardware.lcd.GraphicsLCD; -import lejos.robotics.Color; -import lejos.utility.Delay; - -public class LCDWriteTextTest { - - public static GraphicsLCD lcd = LCD.getInstance(); - - public static void main(final String[] args){ - - System.out.println("EV3 LCD Example"); - - clear(); - writeMessage("Juanito"); - Delay.msDelay(1000); - clear(); - writeMessage("Jorgito"); - Delay.msDelay(1000); - clear(); - writeMessage("Pablito"); - } - - public static void writeMessage(final String message){ - lcd.setColor(Color.BLACK); - lcd.drawString(message, 50,50, 0); - lcd.refresh(); - } - - public static void clear(){ - lcd.setColor(Color.WHITE); - lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); - } -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo.java similarity index 54% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo.java index e439e64..78bc590 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo.java @@ -1,21 +1,24 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class LargeMotorDemo { public static void main(String[] args) throws InterruptedException { - System.out.println("Starting motors on A"); + LOGGER.info("Starting motors on A"); final EV3LargeRegulatedMotor mA = new EV3LargeRegulatedMotor(MotorPort.A); mA.setSpeed(500); mA.brake(); mA.forward(); - System.out.println(String.format("Large Motor is moving: %s at speed %d", mA.isMoving(), mA.getSpeed())); + LOGGER.info(String.format("Large Motor is moving: %s at speed %d", mA.isMoving(), mA.getSpeed())); Delay.msDelay(2000); mA.stop(); - System.out.println("Stopped motors"); + LOGGER.info("Stopped motors"); } } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo2.java similarity index 88% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo2.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo2.java index 314a9d6..4566c59 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorDemo2.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo2.java @@ -1,8 +1,11 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class LargeMotorDemo2 { public static void main(String[] args) throws InterruptedException { diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo3.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo3.java new file mode 100644 index 0000000..f164850 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorDemo3.java @@ -0,0 +1,87 @@ +package examples.actuators; + +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.util.stream.IntStream; + +@Slf4j +public class LargeMotorDemo3 { + + //Robot Definition + private static EV3LargeRegulatedMotor motor1 = new EV3LargeRegulatedMotor(MotorPort.A); + + //Configuration + private final static int DELAY = 300; + private final static int iterations = 90; + + public static void main(String[] args) { + + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + System.out.println("Emergency Stop"); + motor1.stop(); + })); + + motor1.resetTachoCount(); + motor1.coast(); + + imperativeLoops(); + functionalLoops(); + + motor1.stop(); + } + + private static void imperativeLoops() { + + int motorPower = 0; + + for(int x =0; x <= iterations; x++) { + + motorPower = 10 * x; + motor1.setSpeed(motorPower); + motor1.forward(); + LOGGER.info("Power: {}", motor1.getSpeed()); + + Delay.msDelay(DELAY); + } + + for(int x =iterations; x >= 0; x--) { + + motorPower = 10 * x; + motor1.setSpeed(motorPower); + motor1.forward(); + LOGGER.info("Power: {}", motor1.getSpeed()); + + Delay.msDelay(DELAY); + } + + } + + private static void functionalLoops() { + + IntStream.range(0, iterations) + .forEach( (x) -> { + + motor1.setSpeed(10 * x); + motor1.forward(); + LOGGER.info("Power: {}", motor1.getSpeed()); + + Delay.msDelay(DELAY); + }); + + IntStream.range(0, iterations) + .map(i -> 0 + (iterations - i)) + .forEach( (x) -> { + + motor1.setSpeed(10 * x); + motor1.forward(); + LOGGER.info("Power: {}", motor1.getSpeed()); + + Delay.msDelay(DELAY); + }); + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorStopModesExample.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorStopModesExample.java similarity index 93% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorStopModesExample.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorStopModesExample.java index 675f5e6..c6433a3 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/LargeMotorStopModesExample.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/LargeMotorStopModesExample.java @@ -1,5 +1,6 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorDemo.java similarity index 89% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorDemo.java index 0105166..406e723 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorDemo.java @@ -1,5 +1,6 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.EV3MediumRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorStopModesExample.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorStopModesExample.java similarity index 93% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorStopModesExample.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorStopModesExample.java index 8cae1da..f1e221d 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MediumMotorStopModesExample.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MediumMotorStopModesExample.java @@ -1,5 +1,6 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.EV3MediumRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEncoderTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEncoderTest.java new file mode 100644 index 0000000..a5aca5f --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEncoderTest.java @@ -0,0 +1,85 @@ +package examples.actuators; + +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.robotics.RegulatedMotor; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadLocalRandom; +import java.util.concurrent.TimeUnit; + +@Slf4j +public class MotorEncoderTest { + + public static void main(String[] args) throws Exception{ + + RegulatedMotor motor = new EV3LargeRegulatedMotor(MotorPort.A); + motor.resetTachoCount(); + motor.coast(); + + ExecutorService executor = Executors.newFixedThreadPool(2); + + class MotorReader implements Runnable { + private RegulatedMotor motor; + + public MotorReader(RegulatedMotor motor) { + this.motor = motor; + } + + public void run() { + for (int x=1; x < 20; x++){ + + LOGGER.info("{} {}",x ,motor.getTachoCount()); + + Delay.msDelay(500); + } + } + } + + class MotorWriter implements Runnable { + private RegulatedMotor motor; + + public MotorWriter(RegulatedMotor motor) { + this.motor = motor; + } + + public void run() { + for (int x=1; x < 20; x++){ + + + int random = randomWorldNumber(); + LOGGER.info("{}", random); + + int firstDigit = Integer.parseInt(Integer.toString(random).substring(0, 1)); + if(firstDigit > 5) { + motor.stop(); + motor.forward(); + }else { + motor.stop(); + motor.backward(); + } + + Delay.msDelay(1500); + } + } + } + + executor.execute(new MotorReader(motor)); + executor.execute(new MotorWriter(motor)); + executor.awaitTermination(10, TimeUnit.SECONDS); + executor.shutdown(); + + motor.stop(); + + System.exit(0); + } + + private static int randomWorldNumber() { + return 1 + ThreadLocalRandom.current().nextInt(10000); + } + + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEventTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEventTest.java similarity index 77% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEventTest.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEventTest.java index f154401..ae249e9 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEventTest.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorEventTest.java @@ -1,16 +1,19 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.NXTRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.robotics.RegulatedMotor; import lejos.robotics.RegulatedMotorListener; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class MotorEventTest { public static void main(String[] args) { - System.out.println("Testing events with Motors"); + LOGGER.info("Testing events with Motors"); // Listener to stop motors if they get stalled final RegulatedMotorListener listener = new RegulatedMotorListener() { @@ -22,7 +25,7 @@ public void rotationStarted( final boolean stalled, final long timeStamp) { - System.out.println("Started"); + LOGGER.info("Started"); } @Override @@ -32,14 +35,17 @@ public void rotationStopped( final boolean stalled, final long timeStamp) { - System.out.println("Stopped"); + LOGGER.info("Stopped"); } }; final RegulatedMotor mA = new NXTRegulatedMotor(MotorPort.A); + mA.coast(); + mA.addListener(listener); + mA.forward(); - Delay.msDelay(500); + Delay.msDelay(1500); mA.stop(); } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorTest.java new file mode 100644 index 0000000..f3acc50 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MotorTest.java @@ -0,0 +1,23 @@ +package examples.actuators; + +import ev3dev.actuators.lego.motors.Motor; +import lejos.robotics.RegulatedMotor; +import lombok.extern.slf4j.Slf4j; + +/** + * Created by jabrena on 28/6/17. + */ +@Slf4j +public class MotorTest { + + public static void main(String[] args) throws Exception{ + + RegulatedMotor motor = Motor.A; + motor.resetTachoCount(); + motor.coast(); + + LOGGER.info("{}", motor.getTachoCount()); + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsDemo.java similarity index 66% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsDemo.java index 5b72e9d..92a3e1f 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsDemo.java @@ -1,11 +1,11 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; -import ev3dev.hardware.EV3DevPlatforms; -import ev3dev.sensors.Battery; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; -public class MultipleMotorsDemo extends EV3DevPlatforms { + +public class MultipleMotorsDemo { public static void main(String[] args) throws InterruptedException { @@ -17,12 +17,9 @@ public static void main(String[] args) throws InterruptedException { final EV3LargeRegulatedMotor mB = new EV3LargeRegulatedMotor(MotorPort.B); //To Stop the motor in case of pkill java for example - Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { - public void run() { - mA.stop(); - mB.stop(); - System.out.println(Battery.getInstance().getVoltage()); - } + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + mA.stop(); + mB.stop(); })); mA.brake(); diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsStopDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsStopDemo.java similarity index 63% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsStopDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsStopDemo.java index 65a3f02..a8423fd 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MultipleMotorsStopDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/MultipleMotorsStopDemo.java @@ -1,11 +1,11 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; -import ev3dev.hardware.EV3DevPlatforms; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; -public class MultipleMotorsStopDemo extends EV3DevPlatforms { +public class MultipleMotorsStopDemo { - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) { MultipleMotorsStopDemo example = new MultipleMotorsStopDemo(); diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/NXTRegulatedMotorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorDemo.java similarity index 90% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/NXTRegulatedMotorDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorDemo.java index 1a91326..cd51aba 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/NXTRegulatedMotorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorDemo.java @@ -1,5 +1,6 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.NXTRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.robotics.RegulatedMotor; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorStopModesExample.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorStopModesExample.java new file mode 100644 index 0000000..a2722ba --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/NXTRegulatedMotorStopModesExample.java @@ -0,0 +1,44 @@ +package examples.actuators; + +import ev3dev.actuators.lego.motors.NXTRegulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.robotics.RegulatedMotor; +import lejos.utility.Delay; + +public class NXTRegulatedMotorStopModesExample { + + public static void main(String[] args) throws InterruptedException { + + System.out.println("Starting motors on A"); + final RegulatedMotor mA = new NXTRegulatedMotor(MotorPort.A); + mA.setSpeed(500); + + System.out.println("Testing brake stop mode"); + mA.brake(); + mA.forward(); + System.out.println(String.format("Large Motor is moving: %s at speed %d", mA.isMoving(), mA.getSpeed())); + Delay.msDelay(2000); + mA.stop(); + + Delay.msDelay(2000); + + System.out.println("Testing hold stop mode"); + mA.hold(); + mA.forward(); + System.out.println(String.format("Large Motor is moving: %s at speed %d", mA.isMoving(), mA.getSpeed())); + Delay.msDelay(2000); + mA.stop(); + + Delay.msDelay(2000); + + System.out.println("Testing coast stop mode"); + mA.coast(); + mA.forward(); + System.out.println(String.format("Large Motor is moving: %s at speed %d", mA.isMoving(), mA.getSpeed())); + Delay.msDelay(2000); + mA.stop(); + + System.out.println("Stopped motors"); + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateDemo.java new file mode 100644 index 0000000..2b96b30 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateDemo.java @@ -0,0 +1,42 @@ +package examples.actuators; + +import ev3dev.actuators.Sound; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.utility.Delay; + +public class RegulatedMotorRotateDemo { + + public static void main(String[] args) { + + Sound sound = Sound.getInstance(); + + final int degreesToTurn = 90; + + final EV3LargeRegulatedMotor mA = new EV3LargeRegulatedMotor(MotorPort.A); + mA.resetTachoCount(); + mA.setSpeed(100); + + mA.brake(); + + sound.beep(); + System.out.println("" + mA.getTachoCount()); + mA.rotate(degreesToTurn); + sound.beep(); + Delay.msDelay(1000); + System.out.println("" + mA.getTachoCount()); + mA.rotate(degreesToTurn); + sound.beep(); + Delay.msDelay(1000); + System.out.println("" + mA.getTachoCount()); + mA.rotate(degreesToTurn); + sound.beep(); + Delay.msDelay(1000); + System.out.println("" + mA.getTachoCount()); + mA.rotate(degreesToTurn); + sound.beep(); + Delay.msDelay(1000); + System.out.println("" + mA.getTachoCount()); + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateToDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateToDemo.java new file mode 100644 index 0000000..9f8e998 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/RegulatedMotorRotateToDemo.java @@ -0,0 +1,38 @@ +package examples.actuators; + +import ev3dev.actuators.Sound; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.utility.Delay; + +public class RegulatedMotorRotateToDemo { + + public static void main(String[] args) { + + Sound sound = Sound.getInstance(); + + final int degreesToTurn = 90; + int currentDegrees = 0; + + EV3LargeRegulatedMotor mA = new EV3LargeRegulatedMotor(MotorPort.A); + mA.resetTachoCount(); + mA.setSpeed(100); + + mA.brake(); + + System.out.println("" + mA.getTachoCount()); + currentDegrees += degreesToTurn; + System.out.println("" + currentDegrees); + mA.rotateTo(currentDegrees); + sound.beep(); + Delay.msDelay(1000); + + System.out.println("" + mA.getTachoCount()); + currentDegrees += degreesToTurn; + System.out.println("" + currentDegrees); + mA.rotateTo(currentDegrees); + sound.beep(); + Delay.msDelay(1000); + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo.java similarity index 91% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo.java index f5c9df5..69fe4c1 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo.java @@ -1,5 +1,6 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.UnregulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo2.java similarity index 89% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo2.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo2.java index a961fe1..73fcc33 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMotorDemo2.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo2.java @@ -1,12 +1,13 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; public class UnregulatedMotorDemo2 { //Robot Definition - private static EV3LargeRegulatedMotor umotor1 = new EV3LargeRegulatedMotor(MotorPort.C); + private static EV3LargeRegulatedMotor umotor1 = new EV3LargeRegulatedMotor(MotorPort.A); //Configuration private final static int motorPower = 30; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo3.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo3.java new file mode 100644 index 0000000..ef6b641 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo3.java @@ -0,0 +1,45 @@ +package examples.actuators; + +import ev3dev.actuators.lego.motors.UnregulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.util.stream.IntStream; + +@Slf4j +public class UnregulatedMotorDemo3 { + + //Robot Definition + private static UnregulatedMotor umotor1 = new UnregulatedMotor(MotorPort.C); + + //Configuration + private final static int DELAY = 300; + + public static void main(String[] args) { + + int motorPower = 0; + + IntStream.range(0, 10).forEach( (x) -> { + + umotor1.setPower(10 * x); + umotor1.forward(); + LOGGER.info("Power: {}", umotor1.getPower()); + + Delay.msDelay(DELAY); + }); + + for(int x =10; x >= 0; x--) { + + motorPower = 10 * x; + umotor1.setPower(motorPower); + umotor1.forward(); + LOGGER.info("Power: {}", umotor1.getPower()); + + Delay.msDelay(DELAY); + } + + umotor1.stop(); + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo4.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo4.java new file mode 100644 index 0000000..878fa2f --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMotorDemo4.java @@ -0,0 +1,82 @@ +package examples.actuators; + +import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; +import lejos.hardware.port.MotorPort; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.util.stream.IntStream; + +@Slf4j +public class UnregulatedMotorDemo4 { + + //Robot Definition + private static EV3LargeRegulatedMotor umotor1 = new EV3LargeRegulatedMotor(MotorPort.A); + + //Configuration + private final static int DELAY = 300; + + public static void main(String[] args) { + + umotor1.resetTachoCount(); + umotor1.suspendRegulation(); + umotor1.brake(); + + imperativeLoops(); + functionalLoops(); + + umotor1.stop(); + } + + private static void imperativeLoops() { + + int motorPower = 0; + + for(int x =0; x <= 10; x++) { + + motorPower = 10 * x; + umotor1.setSpeed(motorPower); + umotor1.forward(); + LOGGER.info("Power: {}", umotor1.getSpeed()); + + Delay.msDelay(DELAY); + } + + for(int x =10; x >= 0; x--) { + + motorPower = 10 * x; + umotor1.setSpeed(motorPower); + umotor1.forward(); + LOGGER.info("Power: {}", umotor1.getSpeed()); + + Delay.msDelay(DELAY); + } + + } + + private static void functionalLoops() { + + IntStream.range(0, 10) + .forEach( (x) -> { + + umotor1.setSpeed(10 * x); + umotor1.forward(); + LOGGER.info("Power: {}", umotor1.getSpeed()); + + Delay.msDelay(DELAY); + }); + + IntStream.range(0, 10) + .map(i -> 0 + (10 - i)) + .forEach( (x) -> { + + umotor1.setSpeed(10 * x); + umotor1.forward(); + LOGGER.info("Power: {}", umotor1.getSpeed()); + + Delay.msDelay(DELAY); + }); + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMutilpleMotorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMutilpleMotorDemo.java similarity index 94% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMutilpleMotorDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMutilpleMotorDemo.java index 335e4fe..8a3395d 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/UnregulatedMutilpleMotorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/UnregulatedMutilpleMotorDemo.java @@ -1,5 +1,6 @@ -package ev3dev.actuators.lego.motors; +package examples.actuators; +import ev3dev.actuators.lego.motors.UnregulatedMotor; import lejos.hardware.port.MotorPort; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDCircles.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDCircles.java new file mode 100644 index 0000000..ac5d9eb --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDCircles.java @@ -0,0 +1,106 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.utils.JarResource; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.robotics.Color; +import lejos.utility.Delay; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.image.BufferedImage; +import java.io.IOException; + +public class LCDCircles { + + public static Logger LOGGER = LoggerFactory.getLogger(LCDCircles.class); + + private GraphicsLCD lcd; + + public LCDCircles() { + + lcd = LCD.getInstance(); + + showJavaLogo(lcd); + + Delay.msDelay(4000); + + clear(lcd); + fourFractalCircle( + 1, + 25, + 0, + 128, + lcd); + + Delay.msDelay(5000); + + clear(lcd); + fourFractalCircle( + 2, + 25, + 0, + 128, + lcd); + + Delay.msDelay(5000); + + clear(lcd); + fourFractalCircle( + 3, + 25, + 0, + 128, + lcd); + + Delay.msDelay(5000); + + clear(lcd); + fourFractalCircle( + 4, + 25, + 0, + 128, + lcd); + + Delay.msDelay(5000); + } + + + public static void main(String[] args) { + LCDCircles main = new LCDCircles(); + } + + public static void fourFractalCircle(int interacoes, int x, int y, int tamanho, GraphicsLCD g) { + if (interacoes == 0) { + + } else { + g.setColor(Color.BLACK); + g.drawOval(x, y, tamanho, tamanho); + g.refresh(); + fourFractalCircle(interacoes - 1, x+tamanho / 4, y, tamanho / 2, g); //chamada recurssiva para desenhar circulos na parte superior + fourFractalCircle(interacoes - 1, x, y+tamanho / 4, tamanho / 2, g);//chamada recurssiva para desenhar circulos na parte esquerda + fourFractalCircle(interacoes - 1, x + tamanho / 2, y+tamanho / 4, tamanho / 2, g);////chamada recurssiva para desenhar circulos na parte direita + fourFractalCircle(interacoes - 1, x+ tamanho / 4, y + tamanho / 2, tamanho / 2, g);//chamada recurssiva para desenhar circulos na parte inferior + } + } + + public static void clear(GraphicsLCD g) { + //lcd.setColor(Color.WHITE); + g.setColor(255,255,255); + g.fillRect(0,0, g.getWidth(), g.getHeight()); + } + + public static final String JAVA_DUKE_IMAGE_NAME = "java_logo.png"; + + private static void showJavaLogo(GraphicsLCD lcd) { + + try { + BufferedImage image = JarResource.loadImage(JAVA_DUKE_IMAGE_NAME); + lcd.drawImage(image, 35, 10, 0); + lcd.refresh(); + }catch (IOException e){ + LOGGER.error(e.getLocalizedMessage()); + } + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawIconsTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawIconsTest.java new file mode 100644 index 0000000..bcd6d3b --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawIconsTest.java @@ -0,0 +1,44 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.robotics.Color; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.awt.*; + +@Slf4j +public class LCDDrawIconsTest { + + public static GraphicsLCD lcd = LCD.getInstance(); + + public static void main(final String[] args) { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + //clear(); + lcd.clear(); + //lcd.setColor(Color.BLACK); + lcd.setColor(0, 0, 0); + lcd.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 70)); + lcd.drawString("\u2665", 50, 50, 0); + lcd.drawString("\u2661", 70, 70, 0); + lcd.refresh(); + + Delay.msDelay(5000); + } + + public static void clear() { + lcd.setColor(Color.WHITE); + lcd.fillRect(0, 0, lcd.getWidth(), lcd.getHeight()); + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawImagesTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawImagesTest.java new file mode 100644 index 0000000..2bd525c --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawImagesTest.java @@ -0,0 +1,54 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import ev3dev.utils.JarResource; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.awt.image.BufferedImage; +import java.io.IOException; + +@Slf4j +public class LCDDrawImagesTest { + + public static GraphicsLCD lcd = LCD.getInstance(); + + public static void main(final String[] args) throws IOException { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + clear(); + + BufferedImage cross = JarResource.loadImage("cross.gif"); + BufferedImage nought = JarResource.loadImage("nought.gif"); + + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + //LCD.drawImage(img, new AffineTransform(1f, 0f, 0f, 1f, 0, 0), null); + //LCD.drawImage(image, 40,40, null); + lcd.drawImage(cross,40,40,0); + //LCD.drawImage(img, 0,0, Color.WHITE, null); + lcd.drawImage(nought, 0,0,0); + + lcd.refresh(); + + Delay.msDelay(5000); + + } + + + public static void clear() { + //lcd.setColor(Color.WHITE); + lcd.setColor(255, 255, 255); + lcd.fillRect(0, 0, lcd.getWidth(), lcd.getHeight()); + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawLinesTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawLinesTest.java new file mode 100644 index 0000000..2a202a6 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawLinesTest.java @@ -0,0 +1,34 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class LCDDrawLinesTest { + + + public static void main(final String[] args) { + + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + GraphicsLCD lcd = LCD.getInstance(); + + lcd.clear(); + lcd.setColor(0, 0, 0); + lcd.drawLine(0, 0, 50, 50); + lcd.drawLine(0, 0, 30, 60); + lcd.refresh(); + + Delay.msDelay(5000); + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesAnimationTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesAnimationTest.java new file mode 100644 index 0000000..6d59f47 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesAnimationTest.java @@ -0,0 +1,76 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import ev3dev.utils.JarResource; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +import java.awt.image.BufferedImage; +import java.io.IOException; + +@Slf4j +public class LCDDrawRectanglesAnimationTest { + + public static GraphicsLCD lcd = LCD.getInstance(); + + public static void main(final String[] args) { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + showJavaLogo(); + Delay.msDelay(5000); + + clear(); + + sin(); + + Delay.msDelay(5000); + } + + public static final String JAVA_DUKE_IMAGE_NAME = "java_logo.png"; + + private static void showJavaLogo() { + + if(LOGGER.isDebugEnabled()) + LOGGER.debug("Showing Java logo on EV3 Brick"); + + try { + BufferedImage image = JarResource.loadImage(JAVA_DUKE_IMAGE_NAME); + lcd.drawImage(image, 35, 10, 0); + lcd.refresh(); + }catch (IOException e){ + LOGGER.error(e.getLocalizedMessage()); + } + } + + public static void sin() { + + for ( int i = 0; i < lcd.getWidth(); i++ ) { + int x = i; + int y = 50 + (int) (Math.sin(i) * 5); + + clear(); + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + lcd.fillRect(x, y, 20, 20); + lcd.refresh(); + Delay.msDelay(10); + } + + } + + public static void clear(){ + //lcd.setColor(Color.WHITE); + lcd.setColor(255,255,255); + lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesTest.java new file mode 100644 index 0000000..71b8675 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDDrawRectanglesTest.java @@ -0,0 +1,41 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class LCDDrawRectanglesTest { + + public static GraphicsLCD lcd = LCD.getInstance(); + + public static void main(final String[] args) { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + clear(); + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + lcd.drawRect(0, 0, 20, 20); + lcd.drawRect(40, 40, 80, 80); + lcd.refresh(); + + Delay.msDelay(5000); + } + + + public static void clear(){ + //lcd.setColor(Color.WHITE); + lcd.setColor(255,255,255); + lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDFontTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDFontTest.java similarity index 52% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDFontTest.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDFontTest.java index c442ebd..019fbc7 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/LCDFontTest.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDFontTest.java @@ -1,42 +1,59 @@ -package ev3dev.actuators; +package ev3dev.actuators.ev3; +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; import java.awt.*; +@Slf4j public class LCDFontTest { public static GraphicsLCD lcd = LCD.getInstance(); - public static void main(final String[] args){ + public static void main(final String[] args) { - System.out.println("EV3 LCD Example"); + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); // Get all font family name in a String[] String[] fontNames = env.getAvailableFontFamilyNames(); for (String fontName : fontNames) { - System.out.println("Font: {}" + fontName); + LOGGER.info("Font: {}", fontName); } // Construct all Font instance (with font size of 1) Font[] fonts = env.getAllFonts(); for (Font font : fonts) { - System.out.println("Font: {}" + font); + LOGGER.info("Font: {}", font); } writeMessage("Hello World"); + + Delay.msDelay(5000); } + public static void writeMessage(final String message){ - lcd.setColor(lejos.robotics.Color.BLACK); + //lcd.setColor(lejos.robotics.Color.BLACK); + lcd.setColor(0,0,0); lcd.drawString(message, 50,50, 0); lcd.refresh(); } public static void clear(){ - lcd.setColor(lejos.robotics.Color.WHITE); + //lcd.setColor(lejos.robotics.Color.WHITE); + lcd.setColor(255,255,255); lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + } } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDTest.java new file mode 100644 index 0000000..dd011e6 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDTest.java @@ -0,0 +1,46 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class LCDTest { + + public static GraphicsLCD lcd = LCD.getInstance(); + + public static void main(final String[] args) { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + lcd.drawRect(0,0, lcd.getWidth(), lcd.getHeight()); + lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + + //lcd.setColor(Color.WHITE); + lcd.setColor(255,255,255); + lcd.drawString("Hello World", (lcd.getWidth()/ 2)-30, lcd.getHeight()/2, 0); + + lcd.refresh(); + + Delay.msDelay(5000); + } + + + public static void clear(){ + //lcd.setColor(Color.WHITE); + lcd.setColor(255,255,255); + lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDWriteTextTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDWriteTextTest.java new file mode 100644 index 0000000..0d99be7 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LCDWriteTextTest.java @@ -0,0 +1,49 @@ +package ev3dev.actuators.ev3; + +import ev3dev.actuators.LCD; +import ev3dev.hardware.EV3DevDistro; +import ev3dev.hardware.EV3DevDistros; +import ev3dev.utils.Brickman; +import lejos.hardware.lcd.GraphicsLCD; +import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class LCDWriteTextTest { + + public static GraphicsLCD lcd = LCD.getInstance(); + + public static void main(final String[] args) { + + if(EV3DevDistros.getInstance().getDistro().equals(EV3DevDistro.JESSIE)) { + Brickman.disable(); + } + + LOGGER.info("EV3 LCD Example"); + + clear(); + writeMessage("Juanito"); + Delay.msDelay(5000); + clear(); + writeMessage("Jorgito"); + Delay.msDelay(5000); + clear(); + writeMessage("Pablito"); + Delay.msDelay(5000); + } + + + public static void writeMessage(final String message){ + //lcd.setColor(Color.BLACK); + lcd.setColor(0,0,0); + lcd.drawString(message, 50,50, 0); + lcd.refresh(); + } + + public static void clear(){ + //lcd.setColor(Color.WHITE); + lcd.setColor(255,255,255); + lcd.fillRect(0,0, lcd.getWidth(), lcd.getHeight()); + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LEDExample.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LEDExample.java index 4a9d5aa..acc9f0f 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LEDExample.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/LEDExample.java @@ -2,7 +2,9 @@ import lejos.hardware.LED; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class LEDExample { /** @@ -10,7 +12,7 @@ public class LEDExample { */ public static void main(String[] args) { - System.out.println("Example using EV3 Led"); + LOGGER.info("Example using EV3 Led"); LED led = new EV3Led(EV3Led.LEFT); led.setPattern(0); diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/SoundDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/SoundDemo.java similarity index 74% rename from ev3dev-lang-java/src/main/java/ev3dev/actuators/SoundDemo.java rename to ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/SoundDemo.java index 1f88962..6530255 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/SoundDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/actuators/ev3/SoundDemo.java @@ -1,5 +1,6 @@ -package ev3dev.actuators; +package examples.actuators.ev3; +import ev3dev.actuators.Sound; import ev3dev.utils.JarResource; import lejos.utility.Delay; @@ -30,6 +31,11 @@ public static void main(String[] args) throws IOException { File file = new File(filePath); sound.playSample(file); + sound.playSample(file, 50); + sound.playSample(file, 100); + sound.playSample(file, 50); + sound.playSample(file, 100); + sound.beep(); sound.twoBeeps(); @@ -38,7 +44,13 @@ public static void main(String[] args) throws IOException { for(int i = FREQ1; i <= FREQ2; i += variation) { sound.playTone(i, 500, 100); } - + + int volume = 0; + for(int i = FREQ1; i <= FREQ2; i += variation) { + volume += variation; + sound.playTone(i, 500, volume); + } + sound.playTone(300, 500); } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEncoderTest.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEncoderTest.java deleted file mode 100644 index a8ee36c..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/MotorEncoderTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package ev3dev.actuators.lego.motors; - -import lejos.robotics.RegulatedMotor; -import lejos.utility.Delay; - -/** - * Created by jabrena on 28/6/17. - */ -public class MotorEncoderTest { - - public static void main(String[] args){ - - RegulatedMotor motor = Motor.A; - motor.resetTachoCount(); - motor.coast(); - - for (int x=1; x < 20; x++){ - - System.out.println(motor.getTachoCount()); - - Delay.msDelay(500); - } - - } - -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateDemo.java deleted file mode 100644 index f0cc79f..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateDemo.java +++ /dev/null @@ -1,50 +0,0 @@ -package ev3dev.actuators.lego.motors; - -import ev3dev.actuators.Sound; -import ev3dev.hardware.EV3DevPlatform; -import ev3dev.hardware.EV3DevPlatforms; -import lejos.hardware.port.MotorPort; -import lejos.utility.Delay; - -public class RegulatedMotorRotateDemo extends EV3DevPlatforms { - - public static void main(String[] args) { - - RegulatedMotorRotateDemo example = new RegulatedMotorRotateDemo(); - - Sound sound = Sound.getInstance(); - - final int degreesToTurn = 90; - - final EV3LargeRegulatedMotor mA = new EV3LargeRegulatedMotor(MotorPort.A); - mA.resetTachoCount(); - mA.setSpeed(100); - - if(example.getPlatform().equals(EV3DevPlatform.EV3BRICK)) { - mA.brake(); - - sound.beep(); - System.out.println("" + mA.getTachoCount()); - mA.rotate(degreesToTurn); - sound.beep(); - Delay.msDelay(1000); - System.out.println("" + mA.getTachoCount()); - mA.rotate(degreesToTurn); - sound.beep(); - Delay.msDelay(1000); - System.out.println("" + mA.getTachoCount()); - mA.rotate(degreesToTurn); - sound.beep(); - Delay.msDelay(1000); - System.out.println("" + mA.getTachoCount()); - mA.rotate(degreesToTurn); - sound.beep(); - Delay.msDelay(1000); - System.out.println("" + mA.getTachoCount()); - - } else { - System.out.println("This feature is exclusive of EV3 Brick with accuracy"); - } - - } -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateToDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateToDemo.java deleted file mode 100644 index b2506f0..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/actuators/lego/motors/RegulatedMotorRotateToDemo.java +++ /dev/null @@ -1,46 +0,0 @@ -package ev3dev.actuators.lego.motors; - -import ev3dev.actuators.Sound; -import ev3dev.hardware.EV3DevPlatform; -import ev3dev.hardware.EV3DevPlatforms; -import lejos.hardware.port.MotorPort; -import lejos.utility.Delay; - -public class RegulatedMotorRotateToDemo extends EV3DevPlatforms { - - public static void main(String[] args) { - - RegulatedMotorRotateToDemo example = new RegulatedMotorRotateToDemo(); - - Sound sound = Sound.getInstance(); - - final int degreesToTurn = 90; - int currentDegrees = 0; - - EV3LargeRegulatedMotor mA = new EV3LargeRegulatedMotor(MotorPort.A); - mA.resetTachoCount(); - mA.setSpeed(100); - - if(example.getPlatform().equals(EV3DevPlatform.EV3BRICK)) { - mA.brake(); - - System.out.println("" + mA.getTachoCount()); - currentDegrees += degreesToTurn; - System.out.println("" + currentDegrees); - mA.rotateTo(currentDegrees); - sound.beep(); - Delay.msDelay(1000); - - System.out.println("" + mA.getTachoCount()); - currentDegrees += degreesToTurn; - System.out.println("" + currentDegrees); - mA.rotateTo(currentDegrees); - sound.beep(); - Delay.msDelay(1000); - - } else { - System.out.println("This feature is exclusive of EV3 Brick with accuracy"); - } - - } -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/hardware/PlatformTest.java b/ev3dev-lang-java/src/main/java/ev3dev/hardware/PlatformTest.java deleted file mode 100644 index d2ba05b..0000000 --- a/ev3dev-lang-java/src/main/java/ev3dev/hardware/PlatformTest.java +++ /dev/null @@ -1,11 +0,0 @@ -package ev3dev.hardware; - -public class PlatformTest extends EV3DevDevice { - - public static void main(String[] args) { - final PlatformTest platform = new PlatformTest(); - final EV3DevPlatform value = platform.getPlatform(); - System.out.println("Using the platform: " + value); - } - -} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/BatteryDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/BatteryDemo.java index c5eae88..3ff8c22 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/BatteryDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/BatteryDemo.java @@ -1,10 +1,11 @@ -package ev3dev.sensors; +package examples.sensors; -import ev3dev.hardware.EV3DevPlatform; -import ev3dev.hardware.EV3DevPlatforms; +import ev3dev.sensors.Battery; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; -public class BatteryDemo extends EV3DevPlatforms { +@Slf4j +public class BatteryDemo { public static void main(String[] args) { @@ -13,11 +14,7 @@ public static void main(String[] args) { final Battery battery = Battery.getInstance(); for(int x = 0; x < 20; x++){ - System.out.println("Battery Voltage: " + battery.getVoltage()); - - if(example.getPlatform().equals(EV3DevPlatform.EV3BRICK)) { - System.out.println("Battery Current: " + battery.getBatteryCurrent()); - } + LOGGER.info("Battery Voltage: " + battery.getVoltage()); Delay.msDelay(1000); } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample.java index dffe01c..1e95ee2 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample.java @@ -1,13 +1,17 @@ -package ev3dev.sensors; +package examples.sensors; +import ev3dev.sensors.Button; +import lombok.extern.slf4j.Slf4j; + +@Slf4j public class ButtonExample { public static void main(final String[] args){ - System.out.println("Button example"); + LOGGER.info("Button example"); Button.waitForAnyPress(); - System.out.println("Button pressed"); + LOGGER.info("Button pressed"); } -} +} \ No newline at end of file diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample2.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample2.java new file mode 100644 index 0000000..10f9fac --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonExample2.java @@ -0,0 +1,38 @@ +package examples.sensors; + +import ev3dev.sensors.Button; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class ButtonExample2 { + + public static void main(final String[] args){ + LOGGER.info("Extended Button Example"); + + LOGGER.info("Press UP"); + Button.UP.waitForPress(); + LOGGER.info("Pressed UP"); + + LOGGER.info("Press DOWN"); + Button.DOWN.waitForPress(); + LOGGER.info("Pressed DOWN"); + + LOGGER.info("Press LEFT"); + Button.LEFT.waitForPress(); + LOGGER.info("Pressed LEFT"); + + LOGGER.info("Press RIGHT"); + Button.RIGHT.waitForPress(); + LOGGER.info("Pressed RIGHT"); + + //Brick run use ESCAPE button to exit the program + //LOGGER.info("Press ESCAPE"); + //Button.ESCAPE.waitForPress(); + //LOGGER.info("Pressed ESCAPE"); + + LOGGER.info("Press ENTER"); + Button.ENTER.waitForPress(); + LOGGER.info("Pressed ENTER"); + + } +} \ No newline at end of file diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonListenersExample.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonListenersExample.java new file mode 100644 index 0000000..88767cd --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ButtonListenersExample.java @@ -0,0 +1,73 @@ +package examples.sensors; + +import ev3dev.sensors.Button; +import ev3dev.sensors.EV3Key; +import lejos.hardware.Key; +import lejos.hardware.KeyListener; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +public class ButtonListenersExample { + + private static final DateTimeFormatter TIMESTAMP_FORMAT = DateTimeFormatter.ofPattern( + "HH:mm:ss.SSS"); + + private static class MyKeyListener implements KeyListener { + private final Key registeredForKey; + + public MyKeyListener(final Key registeredForKey) { + this.registeredForKey = registeredForKey; + } + + @Override + public void keyPressed(final Key key) { + LOGGER.info("%s - [%s listener] %s pressed%n", LocalTime.now().format(TIMESTAMP_FORMAT), + this.registeredForKey.getName(), key.getName()); + } + @Override + public void keyReleased(final Key key) { + LOGGER.info("%s - [%s listener] %s released%n", LocalTime.now().format(TIMESTAMP_FORMAT), + this.registeredForKey.getName(), key.getName()); + } + } + + private static final List BUTTONS_FOR_LISTENERS = Arrays.asList(new Key[] { + Button.UP, + Button.DOWN, + new EV3Key(EV3Key.BUTTON_ALL) // a special key that stands for 'any' key + }); + + public static void main(final String[] args){ + + // registering the listeners + LOGGER.info("Registering key listeners..."); + BUTTONS_FOR_LISTENERS.forEach((key) -> { + key.addKeyListener(new MyKeyListener(key)); + LOGGER.info("Listener for %s key registered%n", key.getName()); + }); + + // printing some on-screen help + final Key exitButton = Button.ENTER; + final Key anyButton = new EV3Key(EV3Key.BUTTON_ALL); + final List registeredKeyNamesExceptAll = BUTTONS_FOR_LISTENERS.stream() + .filter((button) -> ! button.equals(anyButton)) + .map(Key::getName).collect(Collectors.toList()); + LOGGER.info("%nKeep pressing any buttons to see listeners getting key press/release events.%n"); + LOGGER.info("Notice that if you press or release one of the %s buttons, you'll get two events:%n", registeredKeyNamesExceptAll); + LOGGER.info(" 1) one for the listener registered on that specific key%n"); + LOGGER.info(" 2) another one for the listener registered on the special %s key%n", anyButton.getName()); + + // printing the key events (from the listeners) until the ESCAPE key is pressed (i.e. the call above blocks) + LOGGER.info("%nPress the %s key to terminate the program...%n", exitButton.getName()); + exitButton.waitForPress(); + + // terminating + LOGGER.info("%n%s press detected, terminating the program.%n", exitButton.getName()); + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo.java index c701625..4bc84fe 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo.java @@ -1,9 +1,12 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3ColorSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class ColorSensorDemo { //Robot Configuration @@ -15,7 +18,7 @@ public class ColorSensorDemo { public static void main(String[] args) { //Red Mode - System.out.println("Switching to Red Mode"); + LOGGER.info("Switching to Red Mode"); SampleProvider sp = color1.getRedMode(); int sampleSize = sp.sampleSize(); @@ -24,13 +27,13 @@ public static void main(String[] args) { // Takes some samples and prints them for (int i = 0; i < 10; i++) { sp.fetchSample(sample, 0); - System.out.println("N=" + i + " Sample=" + (int)sample[0]); + LOGGER.info("N=" + i + " Sample=" + (int)sample[0]); Delay.msDelay(HALF_SECOND); } //Color ID - System.out.println("Switching to Color ID Mode"); + LOGGER.info("Switching to Color ID Mode"); sp = color1.getColorIDMode(); sampleSize = sp.sampleSize(); @@ -39,13 +42,13 @@ public static void main(String[] args) { // Takes some samples and prints them for (int i = 0; i < 10; i++) { sp.fetchSample(sample, 0); - System.out.println("N=" + i + " Sample={}" + (int)sample[0]); + LOGGER.info("N=" + i + " Sample={}" + (int)sample[0]); Delay.msDelay(HALF_SECOND); } //Ambient Mode - System.out.println("Switching to Ambient Mode"); + LOGGER.info("Switching to Ambient Mode"); sp = color1.getAmbientMode(); sampleSize = sp.sampleSize(); @@ -54,13 +57,13 @@ public static void main(String[] args) { // Takes some samples and prints them for (int i = 0; i < 10; i++) { sp.fetchSample(sample, 0); - System.out.println("N=" + i + " Sample={}" + (int)sample[0]); + LOGGER.info("N=" + i + " Sample={}" + (int)sample[0]); Delay.msDelay(HALF_SECOND); } //RGB - System.out.println("Switching to RGB Mode"); + LOGGER.info("Switching to RGB Mode"); sp = color1.getRGBMode(); sampleSize = sp.sampleSize(); @@ -69,9 +72,9 @@ public static void main(String[] args) { // Takes some samples and prints them for (int i = 0; i < 10; i++) { sp.fetchSample(sample, 0); - System.out.println("N=" + i + " Sample={}" + (int)sample[0]); - System.out.println("N=" + i + " Sample={}" + (int)sample[1]); - System.out.println("N=" + i + " Sample={}" + (int)sample[2]); + LOGGER.info("N=" + i + " Sample={}" + (int)sample[0]); + LOGGER.info("N=" + i + " Sample={}" + (int)sample[1]); + LOGGER.info("N=" + i + " Sample={}" + (int)sample[2]); Delay.msDelay(HALF_SECOND); } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo2.java index 31340d2..b2a1ec0 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo2.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo2.java @@ -1,5 +1,6 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3ColorSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; @@ -9,7 +10,6 @@ public class ColorSensorDemo2 { private static EV3ColorSensor color1 = new EV3ColorSensor(SensorPort.S1); //Configuration - private static int HALF_SECOND = 500; private static SampleProvider sp; public static void main(String[] args) { diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo3.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo3.java index 03ad3a7..b544e39 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo3.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorDemo3.java @@ -1,10 +1,13 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3ColorSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.Color; import lejos.robotics.SampleProvider; import lejos.utility.Delay; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class ColorSensorDemo3 { //Robot Configuration @@ -16,15 +19,12 @@ public class ColorSensorDemo3 { public static void main(String[] args) { //Color ID - System.out.println("Switching to Color ID Mode"); + LOGGER.info("Switching to Color ID Mode"); SampleProvider sp = color1.getColorIDMode(); int sampleSize = sp.sampleSize(); float[] sample = new float[sampleSize]; - System.out.println("Switching to Color ID Mode"); - sp = color1.getColorIDMode(); - int value = 0; // Takes some samples and prints them @@ -32,12 +32,12 @@ public static void main(String[] args) { sp.fetchSample(sample, 0); value = (int)sample[0]; - System.out.println("N={} Sample={}" + i + value); + LOGGER.info("N={} Sample={}" + i + value); Delay.msDelay(HALF_SECOND); if(value == Color.BLUE){ - System.out.println("Blue ball found"); + LOGGER.info("Blue ball found"); break; } } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorMultipleDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorMultipleDemo.java index d54e8c1..e5d68a6 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorMultipleDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/ColorSensorMultipleDemo.java @@ -1,5 +1,6 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3ColorSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo.java index f307637..23a36d0 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo.java @@ -1,6 +1,7 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; import ev3dev.sensors.Battery; +import ev3dev.sensors.ev3.EV3GyroSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo2.java index c1a009f..5f7cdfd 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo2.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo2.java @@ -1,5 +1,6 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3GyroSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo3.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo3.java index 9d2c32d..e4bd5e3 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo3.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/GyroSensorDemo3.java @@ -1,5 +1,6 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3GyroSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; @@ -16,6 +17,7 @@ public class GyroSensorDemo3 { public static void main(String[] args) { + gyroSensor.reset(); final SampleProvider sp = gyroSensor.getAngleAndRateMode(); int value = 0; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo.java index b9db699..8df0c45 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo.java @@ -1,6 +1,7 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; import ev3dev.sensors.Battery; +import ev3dev.sensors.ev3.EV3IRSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo2.java index 4105285..8797f9a 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo2.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo2.java @@ -1,6 +1,7 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; import ev3dev.sensors.Battery; +import ev3dev.sensors.ev3.EV3IRSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo3.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo3.java index 2973ea2..c312f31 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo3.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo3.java @@ -1,8 +1,8 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3IRSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; -import lejos.utility.Delay; public class IRSensorDemo3 { @@ -22,7 +22,7 @@ public static void main(String[] args) { int beaconInfo4 = 0; //Control loop - final int iteration_threshold = 50; + final int iteration_threshold = 500; for(int i = 0; i <= iteration_threshold; i++) { float [] sample = new float[sp.sampleSize()]; @@ -39,7 +39,7 @@ public static void main(String[] args) { System.out.println("Beacon Channel 3: Remote: {}" + beaconInfo3); System.out.println("Beacon Channel 4: Remote: {}" + beaconInfo4); - Delay.msDelay(HALF_SECOND); + //Delay.msDelay(HALF_SECOND); } } diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo4.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo4.java index e6d6bb8..e32183b 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo4.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/IRSensorDemo4.java @@ -1,7 +1,8 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; import ev3dev.actuators.lego.motors.EV3LargeRegulatedMotor; import ev3dev.sensors.Battery; +import ev3dev.sensors.ev3.EV3IRSensor; import lejos.hardware.port.MotorPort; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; @@ -29,8 +30,8 @@ public void run() { } })); - //mA.brake(); - //mB.brake(); + mA.brake(); + mB.brake(); mA.setSpeed(300); mB.setSpeed(300); @@ -72,7 +73,7 @@ public void run() { }else if(beaconInfo1 == 3){ mB.forward(); }else if(beaconInfo1 == 4){ - mB.forward(); + mB.backward(); }else if(beaconInfo1 == 5){ mA.forward(); mB.forward(); diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/TouchSensorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/TouchSensorDemo.java index 93b0769..4f6a5cb 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/TouchSensorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/TouchSensorDemo.java @@ -1,6 +1,7 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; import ev3dev.sensors.Battery; +import ev3dev.sensors.ev3.EV3TouchSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo.java index 49d11b8..977f454 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo.java @@ -1,5 +1,6 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; +import ev3dev.sensors.ev3.EV3UltrasonicSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo2.java index b811bc3..75c75af 100644 --- a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo2.java +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorDemo2.java @@ -1,6 +1,7 @@ -package ev3dev.sensors.ev3; +package examples.sensors.ev3; import ev3dev.sensors.Battery; +import ev3dev.sensors.ev3.EV3UltrasonicSensor; import lejos.hardware.port.SensorPort; import lejos.robotics.SampleProvider; import lejos.utility.Delay; diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorMultipleDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorMultipleDemo.java new file mode 100644 index 0000000..b51312c --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/ev3/USSensorMultipleDemo.java @@ -0,0 +1,42 @@ +package examples.sensors.ev3; + +import ev3dev.sensors.ev3.EV3UltrasonicSensor; +import lejos.hardware.port.SensorPort; +import lejos.robotics.SampleProvider; +import lejos.utility.Delay; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class USSensorMultipleDemo { + + public static Logger LOGGER = LoggerFactory.getLogger(USSensorMultipleDemo.class); + + public static void main(final String[] args) { + + EV3UltrasonicSensor us1 = new EV3UltrasonicSensor(SensorPort.S1); + EV3UltrasonicSensor us2 = new EV3UltrasonicSensor(SensorPort.S2); + + final SampleProvider sp = us1.getListenMode(); + + final SampleProvider sp2 = us2.getDistanceMode(); + + int distanceValue = 0; + + final int iteration_threshold = 100; + for(int i = 0; i <= iteration_threshold; i++) { + + float [] sample2 = new float[sp2.sampleSize()]; + sp2.fetchSample(sample2, 0); + + float [] sample = new float[sp.sampleSize()]; + sp.fetchSample(sample, 0); + distanceValue = (int) sample[0]; + + LOGGER.info("Iteration: {}, Listen: {}", i, distanceValue); + + Delay.msDelay(500); + } + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUAccelerationTest.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUAccelerationTest.java new file mode 100644 index 0000000..45ca2a8 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUAccelerationTest.java @@ -0,0 +1,41 @@ +package examples.sensors.mindsensors; + +import ev3dev.sensors.mindsensors.AbsoluteIMU; +import lejos.hardware.port.SensorPort; +import lejos.robotics.SampleProvider; +import lejos.utility.Delay; + +/** + * Created by jabrena on 3/9/17. + */ +public class AbsoluteIMUAccelerationTest { + + private static int HALF_SECOND = 500; + + public static void main(String[] args) { + + System.out.println("Absolute IMU Demo"); + + final AbsoluteIMU absoluteIMU = new AbsoluteIMU(SensorPort.S1); + SampleProvider sp = absoluteIMU.getAccelerationMode(); + + int sampleSize = sp.sampleSize(); + System.out.println("Sample Size:" + sampleSize); + float[] sample = new float[sampleSize]; + + // Takes some samples and prints them + for (int i = 0; i < 10; i++) { + sp.fetchSample(sample, 0); + + System.out.println("N={} Sample={}" + i + " " + sample[0]); + System.out.println("N={} Sample={}" + i + " " + sample[1]); + System.out.println("N={} Sample={}" + i + " " + sample[2]); + + Delay.msDelay(HALF_SECOND); + + } + + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUCompassTest.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUCompassTest.java new file mode 100644 index 0000000..95c83a6 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUCompassTest.java @@ -0,0 +1,39 @@ +package examples.sensors.mindsensors; + +import ev3dev.sensors.mindsensors.AbsoluteIMU; +import lejos.hardware.port.SensorPort; +import lejos.robotics.SampleProvider; +import lejos.utility.Delay; + +/** + * Created by jabrena on 3/9/17. + */ +public class AbsoluteIMUCompassTest { + + private static int HALF_SECOND = 500; + + public static void main(String[] args) { + + System.out.println("Absolute IMU Demo"); + + final AbsoluteIMU absoluteIMU = new AbsoluteIMU(SensorPort.S1); + SampleProvider sp = absoluteIMU.getCompassMode(); + + int sampleSize = sp.sampleSize(); + System.out.println("Sample Size:" + sampleSize); + float[] sample = new float[sampleSize]; + + // Takes some samples and prints them + for (int i = 0; i < 50; i++) { + sp.fetchSample(sample, 0); + + System.out.println("N={} Sample={}" + i + " " + sample[0]); + + Delay.msDelay(HALF_SECOND); + + } + + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUGyroTest.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUGyroTest.java new file mode 100644 index 0000000..21171e0 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUGyroTest.java @@ -0,0 +1,41 @@ +package examples.sensors.mindsensors; + +import ev3dev.sensors.mindsensors.AbsoluteIMU; +import lejos.hardware.port.SensorPort; +import lejos.robotics.SampleProvider; +import lejos.utility.Delay; + +/** + * Created by jabrena on 3/9/17. + */ +public class AbsoluteIMUGyroTest { + + private static int HALF_SECOND = 500; + + public static void main(String[] args) { + + System.out.println("Absolute IMU Demo"); + + final AbsoluteIMU absoluteIMU = new AbsoluteIMU(SensorPort.S1); + SampleProvider sp = absoluteIMU.getGyroMode(); + + int sampleSize = sp.sampleSize(); + System.out.println("Sample Size:" + sampleSize); + float[] sample = new float[sampleSize]; + + // Takes some samples and prints them + for (int i = 0; i < 10; i++) { + sp.fetchSample(sample, 0); + + System.out.println("N={} Sample={}" + i + " " + sample[0]); + System.out.println("N={} Sample={}" + i + " " + sample[1]); + System.out.println("N={} Sample={}" + i + " " + sample[2]); + + Delay.msDelay(HALF_SECOND); + + } + + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUMagneticTest.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUMagneticTest.java new file mode 100644 index 0000000..6faaecf --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUMagneticTest.java @@ -0,0 +1,41 @@ +package examples.sensors.mindsensors; + +import ev3dev.sensors.mindsensors.AbsoluteIMU; +import lejos.hardware.port.SensorPort; +import lejos.robotics.SampleProvider; +import lejos.utility.Delay; + +/** + * Created by jabrena on 3/9/17. + */ +public class AbsoluteIMUMagneticTest { + + private static int HALF_SECOND = 500; + + public static void main(String[] args) { + + System.out.println("Absolute IMU Demo"); + + final AbsoluteIMU absoluteIMU = new AbsoluteIMU(SensorPort.S1); + SampleProvider sp = absoluteIMU.getMagneticMode(); + + int sampleSize = sp.sampleSize(); + System.out.println("Sample Size:" + sampleSize); + float[] sample = new float[sampleSize]; + + // Takes some samples and prints them + for (int i = 0; i < 10; i++) { + sp.fetchSample(sample, 0); + + System.out.println("N={} Sample={}" + i + " " + sample[0]); + System.out.println("N={} Sample={}" + i + " " + sample[1]); + System.out.println("N={} Sample={}" + i + " " + sample[2]); + + Delay.msDelay(HALF_SECOND); + + } + + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUTiltTest.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUTiltTest.java new file mode 100644 index 0000000..2e2f1bc --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/AbsoluteIMUTiltTest.java @@ -0,0 +1,126 @@ +package examples.sensors.mindsensors; + +import ev3dev.sensors.mindsensors.AbsoluteIMU; +import lejos.hardware.port.SensorPort; +import lejos.robotics.SampleProvider; +import lejos.utility.Delay; + +/** + * Mindsensors AbsoluteIMU
+ * Sensor interface for the Mindsensors AbsoluteIMU family of sensors. The + * AbsoluteIMU sensors combine gyro, accelerometer and compass sensors in + * various combinations in a single housing. This interface works with all + * AbsoluteIMU models, but not all modes will work with any particular model. + * + * + *

+ * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
Supported modes
Mode nameDescriptionunit(s)Getter
MagneticMeasures the strength of the magnetic field over three axes {getMagneticMode() }
CompassMeasures the orientation of the sensorDegrees, corresponding to the compass rose {getCompassMode() }
AngleMeasures the orientation of the sensorDegrees, corresponding to the right hand coordinate system {getAngleMode() }
AccelerationThe Acceleration mode measures the linear acceleration of the sensor over + * three axesMetres/second^2 {getAccelerationMode() }
RateThe Rate mode measures the angular speed of the sensor over three axesDegrees/second {getRateMode() }
+ * + * + *

+ * + * Sensor configuration
+ * The gyro sensor of the AbsoluteIMU uses a filter to remove noise from + * the samples. The filter can be configured using the {setGyroFilter } + * method.
+ * The compass sensor of the AbsoluteIMU can be calibrated to compensate for magnetical disturbances on the robot (soft iron + * calibration) using the {#startCalibration} and {stopCalibration} + * methods.

+ * To calibrate Compass, mount it on your robot where it will be used and + * issue startCalibration method and then rotate AbsoluteIMU slowly along all + * three axes. (The Compass in AbsoluteIMU is a 3 axis compass, and hence + * needs to be turned along all three axes, and if it's mounted on your robot, + * the whole robot needs to rotate). Rotate one axis at a time, turn once in + * clock-wise direction completing at-least 360 degrees, and then turn it in + * anti-clock-wise direction, then go to next axis. Upon finishing turning + * along all axes, issue stopCalibration method. + * + * + *

+ * + * See Mindsensors IMU user guide"> Sensor Product page + * See The + * leJOS sensor framework + * See {@link SampleProvider leJOS conventions for + * SampleProviders} + * + *

+ * + * + * @author Andy, Juan Antonio Breña Moral + * + */ +public class AbsoluteIMUTiltTest { + + private static int HALF_SECOND = 500; + + public static void main(String[] args) { + + System.out.println("Absolute IMU Demo"); + + final AbsoluteIMU absoluteIMU = new AbsoluteIMU(SensorPort.S1); + SampleProvider sp = absoluteIMU.getTiltMode(); + + int sampleSize = sp.sampleSize(); + System.out.println("Sample Size:" + sampleSize); + float[] sample = new float[sampleSize]; + + // Takes some samples and prints them + for (int i = 0; i < 10; i++) { + sp.fetchSample(sample, 0); + + System.out.println("N={} Sample={}" + i + " " + sample[0]); + System.out.println("N={} Sample={}" + i + " " + sample[1]); + System.out.println("N={} Sample={}" + i + " " + sample[2]); + + Delay.msDelay(HALF_SECOND); + + } + + + } + +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoDemo.java new file mode 100644 index 0000000..ae9ed15 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoDemo.java @@ -0,0 +1,38 @@ +package examples.sensors.mindsensors; + + +import ev3dev.actuators.Sound; +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class CreatePhotoDemo { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 create Photo Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + + int counter = 0; + boolean flag = true; + while (flag) { + + Delay.msDelay(5000); + System.out.println("Creating photo"); + camera.createPhoto(); + Sound.getInstance().beep(); + Delay.msDelay(500); + + counter++; + if(counter > 5){ + break; + } + } + + System.exit(0); + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoEV3Demo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoEV3Demo.java new file mode 100644 index 0000000..5d11d52 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/CreatePhotoEV3Demo.java @@ -0,0 +1,34 @@ +package examples.sensors.mindsensors; + + +import ev3dev.actuators.Sound; +import ev3dev.sensors.Button; +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class CreatePhotoEV3Demo { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 create Photo Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + + while (Button.ESCAPE.isUp()) { + + Button.waitForAnyPress(); + Delay.msDelay(5000); + System.out.println("Creating photo"); + camera.createPhoto(); + Sound.getInstance().beep(); + Delay.msDelay(500); + + } + + System.exit(0); + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo.java new file mode 100644 index 0000000..8244ae5 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo.java @@ -0,0 +1,34 @@ +package examples.sensors.mindsensors; + +import ev3dev.actuators.Sound; +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class FaceRecognitionDemo { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 Face Recognition Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + camera.setTrackingMode(NXTCamV5.FACE_TRACKING); + + for(int x = 0; x <= 100; x++){ + System.out.println("Iteration: " + x); + + int trackedObject = camera.getNumberOfObjects(); + System.out.println(trackedObject); + + if(trackedObject > 0) { + Sound.getInstance().beep(); + } + + Delay.msDelay(1000); + } + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo2.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo2.java new file mode 100644 index 0000000..6a6cba0 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/FaceRecognitionDemo2.java @@ -0,0 +1,47 @@ +package examples.sensors.mindsensors; + +import ev3dev.actuators.Sound; +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.robotics.geometry.Rectangle2D; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class FaceRecognitionDemo2 { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 Face Recognition Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + camera.setTrackingMode(NXTCamV5.FACE_TRACKING); + + for(int x = 0; x <= 100; x++){ + System.out.println("Iteration: " + x); + + int trackedObject = camera.getNumberOfObjects(); + System.out.println(trackedObject); + + if(trackedObject > 0) { + Sound.getInstance().beep(); + } + + if(trackedObject > 0) { + for(int y = 0; y < trackedObject; y++){ + Rectangle2D rectangle = camera.getRectangle(y); + System.out.print("W: " + rectangle.getWidth() + " "); + System.out.print("H: " + rectangle.getHeight() + " "); + System.out.print("X: " + rectangle.getX() + " "); + System.out.print("Y: " + rectangle.getY() + "\n"); + } + + Sound.getInstance().beep(); + } + + Delay.msDelay(1000); + } + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RecordVideoDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RecordVideoDemo.java new file mode 100644 index 0000000..2da04c5 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RecordVideoDemo.java @@ -0,0 +1,26 @@ +package examples.sensors.mindsensors; + +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class RecordVideoDemo { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 create Video Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + + System.out.println("Creating video"); + camera.createVideo(); + + Delay.msDelay(20000); + System.out.println("End process"); + + System.exit(0); + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RectanglesDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RectanglesDemo.java new file mode 100644 index 0000000..faddb98 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/RectanglesDemo.java @@ -0,0 +1,45 @@ +package examples.sensors.mindsensors; + +import ev3dev.actuators.Sound; +import ev3dev.sensors.Button; +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.robotics.geometry.Rectangle2D; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class RectanglesDemo { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 Track Object Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + + int counter = 0; + while (Button.ENTER.isUp()) { + counter++; + System.out.println("Iteration: " + counter); + + int trackedObject = camera.getNumberOfObjects(); + System.out.println(trackedObject); + + if(trackedObject > 0) { + for(int x = 0; x < trackedObject; x++){ + Rectangle2D rectangle = camera.getRectangle(x); + System.out.print("W: " + rectangle.getWidth() + " "); + System.out.print("H: " + rectangle.getHeight() + " "); + System.out.print("X: " + rectangle.getX() + " "); + System.out.print("Y: " + rectangle.getY() + "\n"); + } + + Sound.getInstance().beep(); + } + + Delay.msDelay(1000); + } + + } +} diff --git a/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/TrackObjectsDemo.java b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/TrackObjectsDemo.java new file mode 100644 index 0000000..802156e --- /dev/null +++ b/ev3dev-lang-java/src/main/java/ev3dev/sensors/mindsensors/TrackObjectsDemo.java @@ -0,0 +1,36 @@ +package examples.sensors.mindsensors; + +import ev3dev.actuators.Sound; +import ev3dev.sensors.Button; +import ev3dev.sensors.mindsensors.NXTCamV5; +import lejos.hardware.port.SensorPort; +import lejos.utility.Delay; + +/** + * Created by jabrena on 30/7/17. + */ +public class TrackObjectsDemo { + + public static void main(String[] args){ + + System.out.println("NXTCamV5 Track Object Demo"); + + final NXTCamV5 camera = new NXTCamV5(SensorPort.S1); + + int counter = 0; + while (Button.ENTER.isUp()) { + counter++; + System.out.println("Iteration: " + counter); + + int trackedObject = camera.getNumberOfObjects(); + System.out.println(trackedObject); + + if(trackedObject > 0) { + Sound.getInstance().beep(); + } + + Delay.msDelay(1000); + } + + } +} diff --git a/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/ko/package-info.java b/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/ko/package-info.java index 22f0f8e..0d6316f 100644 --- a/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/ko/package-info.java +++ b/ev3dev-lang-java/src/main/java/lejos/commons/subsumption/ko/package-info.java @@ -1,3 +1,4 @@ +package lejos.commons.subsumption.ko; /** Technical note: 2017/06/04 @@ -27,4 +28,4 @@ ev3dev#1| ... 3 more Failed command ev3dev#1 with status 1: java -server -jar /home/robot/ev3dev-lang-java-all-0.1.0.jar - */ \ No newline at end of file + */ diff --git a/ev3dev-lang-java/src/main/java/lejos/navigation/feature/ko/Package-info.java b/ev3dev-lang-java/src/main/java/lejos/navigation/feature/ko/Package-info.java deleted file mode 100644 index e69de29..0000000 diff --git a/ev3dev-lang-java/src/main/java/lejos/navigation/feature/ko/package-info.java b/ev3dev-lang-java/src/main/java/lejos/navigation/feature/ko/package-info.java new file mode 100644 index 0000000..6725be7 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/lejos/navigation/feature/ko/package-info.java @@ -0,0 +1 @@ +package lejos.navigation.feature.ko; diff --git a/ev3dev-lang-java/src/main/java/lejos/navigation/pathfinding/pathfind.java b/ev3dev-lang-java/src/main/java/lejos/navigation/pathfinding/pathfind.java new file mode 100644 index 0000000..2a9dde3 --- /dev/null +++ b/ev3dev-lang-java/src/main/java/lejos/navigation/pathfinding/pathfind.java @@ -0,0 +1,55 @@ +package lejos.navigation.pathfinding; + + +import lejos.robotics.geometry.Line; +import lejos.robotics.geometry.Rectangle; +import lejos.robotics.mapping.LineMap; +import lejos.robotics.pathfinding.ShortestPathFinder; +import lejos.robotics.navigation.Pose; +import lejos.robotics.navigation.Waypoint; + +public class pathfind { + public static Line[] course = { + new Line(-40,-40,-40,100), + new Line(-40,100,20,100), + new Line(20,100,20,80), + new Line(20,80,80,80), //the barriers that the robot will avoid + new Line(80,80,80,120), + new Line(80,120,120,120), + new Line(120,120,120,80), + new Line(120,80,160,80), + new Line(160,80,160,-40), + new Line(160,-40,-40,-40), + //first box + new Line(20,20,20,60), + new Line(20,60,40,60), + new Line(40,60,40,20), + new Line(40,20,20,20), + //second box + new Line(60,20,60,60), + new Line(60,60,80,60), + new Line(80,60,80,20), + new Line(80,20,60,20), + //third box + new Line(100,20,100,60), + new Line(100,60,120,60), + new Line(120,60,120,20), + new Line(120,20,100,20), + }; + public static Pose start_node = new Pose(0,0,180); //start position + public static Pose final_node = new Pose(100,100,90); //end position + public static Waypoint end_node_waypoint = new Waypoint(final_node); //create waypoint from end position + public static Rectangle frame = new Rectangle(150,150,200,200); //surrounding frame of map + public static LineMap psuedo_map = new LineMap(course,frame); //create line map from array lines and frame + public static ShortestPathFinder captain = new ShortestPathFinder(psuedo_map); + + public static void main (String[] args) { + pathfind start = new pathfind(); + try { + captain.findRoute(start_node,end_node_waypoint); + } + catch (Exception error) { + System.out.println("Destination in unreachable"); + } + } +} \ No newline at end of file diff --git a/ev3dev-lang-java/src/main/resources/META-INF/MANIFEST.MF b/ev3dev-lang-java/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index 546bc4c..0000000 --- a/ev3dev-lang-java/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,6 +0,0 @@ -Manifest-Version: 1.0 -Implementation-Title: EV3Dev-lang-java / examples -Implementation-Version: 0.6.1 -Implementation-Vendor: Juan Antonio Breña Moral -Main-Class: ev3dev.misc.BumperCar - diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..5c2d1cf Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/helloWorldKotlin/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties similarity index 80% rename from helloWorldKotlin/gradle/wrapper/gradle-wrapper.properties rename to gradle/wrapper/gradle-wrapper.properties index 88dbea4..59b5f89 100644 --- a/helloWorldKotlin/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Jun 25 08:53:20 BST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip diff --git a/helloWorldKotlin/gradlew b/gradlew similarity index 86% rename from helloWorldKotlin/gradlew rename to gradlew index 4453cce..83f2acf 100755 --- a/helloWorldKotlin/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,16 +44,16 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -109,8 +125,8 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` @@ -155,7 +171,7 @@ if $cygwin ; then fi # Escape application args -save ( ) { +save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } diff --git a/rosjava-helloworld/gradlew.bat b/gradlew.bat similarity index 75% rename from rosjava-helloworld/gradlew.bat rename to gradlew.bat index e95643d..9618d8d 100644 --- a/rosjava-helloworld/gradlew.bat +++ b/gradlew.bat @@ -1,84 +1,100 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/helloWorldKotlin/.gitignore b/helloWorldKotlin/.gitignore index d35bac4..378eac2 100755 --- a/helloWorldKotlin/.gitignore +++ b/helloWorldKotlin/.gitignore @@ -1,4 +1 @@ -.idea -*.iml build -.gradle diff --git a/helloWorldKotlin/build.gradle b/helloWorldKotlin/build.gradle index da38805..30bb55e 100755 --- a/helloWorldKotlin/build.gradle +++ b/helloWorldKotlin/build.gradle @@ -1,67 +1,23 @@ - -//FatJar -//Deploy on Brick -buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.0' - classpath "org.hidetake:gradle-ssh-plugin:2.0.0" - } -} - plugins { - id "org.jetbrains.kotlin.jvm" version "1.1.3" + id "org.jetbrains.kotlin.jvm" version "1.3.50" } -apply plugin: 'eclipse' -apply plugin: 'idea' - -version = '0.1.0' - -repositories { - mavenCentral() - maven { url 'https://jitpack.io' } -} +version = '0.7.0' dependencies { - compile "org.jetbrains.kotlin:kotlin-stdlib" - - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1") - compile("com.github.ev3dev-lang-java:lejos-navigation:v0.1.0") - - compile("ch.qos.logback:logback-classic:1.2.3") + implementation "org.jetbrains.kotlin:kotlin-stdlib" - testCompile "junit:junit:4.12" - testCompile "org.jetbrains.kotlin:kotlin-test-junit" + implementation("ch.qos.logback:logback-classic:1.2.3") + testImplementation "junit:junit:4.12" + testImplementation "org.jetbrains.kotlin:kotlin-test-junit" } -//Wrapper -task wrapper(type: Wrapper) { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '3.5' -} - -//Jar jar { - baseName = "${rootProject.name}" manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) } } - -//Fat Jar -apply plugin: 'com.github.johnrengelman.shadow' - -task fatJar << { - -} -fatJar.dependsOn shadowJar - -apply plugin: 'org.hidetake.ssh' - -apply from: 'deploy.gradle' - - diff --git a/helloWorldKotlin/config.gradle b/helloWorldKotlin/config.gradle index a3084db..9cb4ba1 100644 --- a/helloWorldKotlin/config.gradle +++ b/helloWorldKotlin/config.gradle @@ -1,8 +1,5 @@ - -remotes { - ev3dev { - host = '192.168.1.206' - user = 'robot' - password = 'maker' - } -} \ No newline at end of file +// Subproject configuration +brick.pref { + // Main class // + mainClass = "org.ev3dev.kotlin.HelloWorldKt" +} diff --git a/helloWorldKotlin/deploy.gradle b/helloWorldKotlin/deploy.gradle deleted file mode 100644 index 96c44a4..0000000 --- a/helloWorldKotlin/deploy.gradle +++ /dev/null @@ -1,69 +0,0 @@ - -task deploy << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-" + version + "-all.jar", into: "/home/robot/" - } - } -} -deploy.dependsOn clean, fatJar - -task remoteRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - execute "java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - } - } -} - -task remoteSudoRun << { - ssh.run { - session(remotes.ev3dev) { - println "echo -e \"maker\" | sudo -S java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all" + ".jar" - execute "echo -e \"maker\" | sudo -S java -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all" + ".jar" - } - } -} - -task remoteProfilingRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - execute "java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - } - } -} - -task remoteProfilingSudoRun << { - ssh.run { - session(remotes.ev3dev) { - println "echo -e \"maker\" | sudo -S java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - execute "echo -e \"maker\" | sudo -S java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar " - } - } -} - -task deployAndRun << { - -} -deployAndRun.dependsOn deploy, remoteRun - - -task deployAndSudoRun << { - -} -deployAndSudoRun.dependsOn deploy, remoteSudoRun - -task deployAndProfilingRun << { - -} -deployAndProfilingRun.dependsOn deploy, remoteProfilingRun - -task deployAndProfilingSudoRun << { - -} -deployAndProfilingSudoRun.dependsOn deploy, remoteProfilingSudoRun - -apply from: 'config.gradle' - diff --git a/helloWorldKotlin/gradle/wrapper/gradle-wrapper.jar b/helloWorldKotlin/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 64e1f78..0000000 Binary files a/helloWorldKotlin/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/helloWorldKotlin/gradlew.bat b/helloWorldKotlin/gradlew.bat deleted file mode 100644 index e95643d..0000000 --- a/helloWorldKotlin/gradlew.bat +++ /dev/null @@ -1,84 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/helloWorldKotlin/src/main/resources/META-INF/MANIFEST.MF b/helloWorldKotlin/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index 0359874..0000000 --- a/helloWorldKotlin/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,5 +0,0 @@ -Manifest-Version: 1.0 -Implementation-Title: EV3Dev-lang-java / examples -Implementation-Version: 0.7.0 -Implementation-Vendor: Juan Antonio Breña Moral -Main-Class: org.ev3dev.kotlin.HelloWorldKt diff --git a/mbeans/.gitignore b/mbeans/.gitignore index d9d3569..378eac2 100644 --- a/mbeans/.gitignore +++ b/mbeans/.gitignore @@ -1,5 +1 @@ -.gradle -.idea build -*.iml - diff --git a/mbeans/README.md b/mbeans/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/mbeans/build.gradle b/mbeans/build.gradle index 933e3a0..7464abe 100644 --- a/mbeans/build.gradle +++ b/mbeans/build.gradle @@ -1,57 +1,10 @@ -//Gradle file library ev3dev-lang-java // MBeans +version = '0.1.0' -version = '0.1.1' - -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' - -repositories { - mavenCentral() - maven { url "https://jitpack.io" } -} - -dependencies { - compile("ch.qos.logback:logback-classic:1.2.3") - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1") - //compile("com.github.ev3dev-lang-java:lejos-navigation:v0.1.0") -} - -//Compile -compileJava { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 -} - -//Jar jar { - baseName = "${rootProject.name}" manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) } } - -//Fat Jar -task fatJar(type: Jar) { - baseName = "${rootProject.name}" + "-all" - manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") - } - from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } - with jar -} - -//Deploy on Brick -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "org.hidetake:gradle-ssh-plugin:2.9.0" - } -} -apply plugin: 'org.hidetake.ssh' - -apply from: 'deploy.gradle' \ No newline at end of file diff --git a/mbeans/config.gradle b/mbeans/config.gradle index 79a0c9e..9777740 100644 --- a/mbeans/config.gradle +++ b/mbeans/config.gradle @@ -1,8 +1,5 @@ - -remotes { - ev3dev { - host = '192.168.1.85' - user = 'robot' - password = 'maker' - } +// Subproject configuration +brick.pref { + // Main class // + mainClass = "org.ev3dev.Main" } diff --git a/mbeans/deploy.gradle b/mbeans/deploy.gradle deleted file mode 100644 index 9187d4a..0000000 --- a/mbeans/deploy.gradle +++ /dev/null @@ -1,51 +0,0 @@ - -remotes { - ev3dev { - host = '192.168.1.85' - user = 'robot' - password = 'maker' - } -} - -task deploy << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-all-" + version + ".jar", into: "/home/robot/" - } - } -} -deploy.dependsOn clean, fatJar - -task remoteRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar " - execute "java -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar " - } - } -} - -task remoteProfilingRun << { - //doLast { - ssh.run { - session(remotes.ev3dev) { - //println "echo -e \"maker\n\" | sudo -S" - //execute "echo -e \"maker\n\" | sudo -S" - println "echo -e \"maker\" | sudo -S java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar " - execute "echo -e \"maker\" | sudo -S java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar " - } - } - //} -} - -task deployAndRun << { - -} -deployAndRun.dependsOn deploy, remoteRun - -task deployAndProfilingRun << { - -} -deployAndProfilingRun.dependsOn deploy, remoteProfilingRun - -apply from: 'config.gradle' \ No newline at end of file diff --git a/mbeans/gradle/wrapper/gradle-wrapper.jar b/mbeans/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b5166da..0000000 Binary files a/mbeans/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/mbeans/gradle/wrapper/gradle-wrapper.properties b/mbeans/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index fca35a4..0000000 --- a/mbeans/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Wed Jun 07 21:38:24 BST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip diff --git a/mbeans/gradlew b/mbeans/gradlew deleted file mode 100755 index 91a7e26..0000000 --- a/mbeans/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/mbeans/gradlew.bat b/mbeans/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/mbeans/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/mbeans/settings.gradle b/mbeans/settings.gradle deleted file mode 100644 index 36fc051..0000000 --- a/mbeans/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This settings file was auto generated by the Gradle buildInit task - * by 'jabrena' at '7/06/17 21:38' with Gradle 2.4 - * - * The settings file is used to specify which projects to include in your build. - * In a single project build this file can be empty or even removed. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user guide at http://gradle.org/docs/2.4/userguide/multi_project_builds.html - */ - -/* -// To declare projects as part of a multi-project build use the 'include' method -include 'shared' -include 'api' -include 'services:webservice' -*/ - -rootProject.name = 'mbeans' diff --git a/mbeans/src/main/resources/META-INF/MANIFEST.MF b/mbeans/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index b4e3f1c..0000000 --- a/mbeans/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,7 +0,0 @@ -Manifest-Version: 1.0 -Implementation-Title: EV3Dev-lang-java // Template project -Implementation-Version: 0.1.0 -Implementation-Vendor: Juan Antonio Breña Moral -Main-Class: org.ev3dev.Main - - diff --git a/opencv/build.gradle b/opencv/build.gradle index 7da89d6..c670486 100644 --- a/opencv/build.gradle +++ b/opencv/build.gradle @@ -1,30 +1,25 @@ -/* - * This build file was auto generated by running the Gradle 'init' task - * by 'jabrena' at '21/05/17 19:26' with Gradle 2.4 - * - * This generated file contains a sample Java project to get you started. - * For more details take a look at the Java Quickstart chapter in the Gradle - * user guide available at http://gradle.org/docs/2.4/userguide/tutorial_java_projects.html - */ - -// Apply the java plugin to add support for Java -apply plugin: 'java' - -// In this section you declare where to find the dependencies of your project -repositories { - // Use 'jcenter' for resolving your dependencies. - // You can declare any Maven/Ivy/file repository here. - jcenter() -} +version = '2.1.0-SNAPSHOT' // In this section you declare the dependencies for your production and test code dependencies { - // The production code uses the SLF4J logging API at compile time - compile 'org.slf4j:slf4j-api:1.7.12' + compileOnly("nu.pattern:opencv:2.4.9-7") + //implementation("org.openpnp:opencv:3.2.0-0") + + implementation("org.slf4j:slf4j-api:1.7.25") + implementation("ch.qos.logback:logback-classic:1.2.3") + + annotationProcessor("org.projectlombok:lombok:1.18.8") + compileOnly("org.projectlombok:lombok:1.18.8") + testCompileOnly("org.projectlombok:lombok:1.18.8") + + testImplementation 'junit:junit:4.12' +} - // Declare the dependency for your favourite test framework you want to use in your tests. - // TestNG is also supported by the Gradle Test task. Just change the - // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add - // 'test.useTestNG()' to your build script. - testCompile 'junit:junit:4.12' +jar { + manifest { + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) + } } diff --git a/opencv/config.gradle b/opencv/config.gradle new file mode 100644 index 0000000..628e9dc --- /dev/null +++ b/opencv/config.gradle @@ -0,0 +1,6 @@ +// Subproject configuration +brick.pref { + // Main class // + mainClass = "example.opencv.HelloWorldCV" + libOpenCV = true +} diff --git a/opencv/gradle/wrapper/gradle-wrapper.jar b/opencv/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b5166da..0000000 Binary files a/opencv/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/opencv/gradle/wrapper/gradle-wrapper.properties b/opencv/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 439b081..0000000 --- a/opencv/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sun May 21 19:26:25 CEST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip diff --git a/opencv/gradlew b/opencv/gradlew deleted file mode 100755 index 91a7e26..0000000 --- a/opencv/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/opencv/gradlew.bat b/opencv/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/opencv/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/opencv/lombok.config b/opencv/lombok.config new file mode 100644 index 0000000..f4809e2 --- /dev/null +++ b/opencv/lombok.config @@ -0,0 +1,2 @@ +lombok.nonNull.exceptionType = IllegalArgumentException +lombok.log.fieldName = LOGGER diff --git a/opencv/settings.gradle b/opencv/settings.gradle deleted file mode 100644 index ada8aeb..0000000 --- a/opencv/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This settings file was auto generated by the Gradle buildInit task - * by 'jabrena' at '21/05/17 19:26' with Gradle 2.4 - * - * The settings file is used to specify which projects to include in your build. - * In a single project build this file can be empty or even removed. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user guide at http://gradle.org/docs/2.4/userguide/multi_project_builds.html - */ - -/* -// To declare projects as part of a multi-project build use the 'include' method -include 'shared' -include 'api' -include 'services:webservice' -*/ - -rootProject.name = 'opencv' diff --git a/opencv/src/main/java/example/opencv/HelloWorldCV.java b/opencv/src/main/java/example/opencv/HelloWorldCV.java new file mode 100644 index 0000000..01bfe6c --- /dev/null +++ b/opencv/src/main/java/example/opencv/HelloWorldCV.java @@ -0,0 +1,21 @@ +package example.opencv; + +import lombok.extern.slf4j.Slf4j; +import org.opencv.core.Core; +import org.opencv.core.CvType; +import org.opencv.core.Mat; + +@Slf4j +public class HelloWorldCV { + + public static void main(String[] args) { + LOGGER.info("Welcome to OpenCV {}", Core.VERSION); + LOGGER.info(System.getProperty("java.library.path")); + LOGGER.info(Core.NATIVE_LIBRARY_NAME); + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + //System.loadLibrary("libopencv_java249.so"); + Mat m = Mat.eye(3, 3, CvType.CV_8UC1); + LOGGER.info("m = {}", m.dump()); + } + +} \ No newline at end of file diff --git a/opencv/src/main/java/example/opencv/MultipleWebcam.java b/opencv/src/main/java/example/opencv/MultipleWebcam.java new file mode 100644 index 0000000..8ed31bf --- /dev/null +++ b/opencv/src/main/java/example/opencv/MultipleWebcam.java @@ -0,0 +1,41 @@ +package example.opencv; + +import org.opencv.core.Core; +import org.opencv.core.Mat; +import org.opencv.highgui.Highgui; +import org.opencv.highgui.VideoCapture; + +/** + * Multiple webcams + * + */ +public class MultipleWebcam { + + public static void main( String[] args ) { + System.out.println("Welcome to OpenCV " + Core.VERSION); + System.loadLibrary(Core.NATIVE_LIBRARY_NAME); + + for(int i = 0; i < 3; i++) { + + VideoCapture camera = new VideoCapture(i); + if (!camera.isOpened()) { + System.out.println("Camera Error"); + } + + Mat frame = new Mat(); + camera.read(frame); + System.out.println("Frame Obtained"); + System.out.println("Captured Frame Width " + frame.width()); + + Highgui.imwrite("camera" + i +".jpg", frame); + + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + } + System.out.println("Iteration:" + i); + + camera.release(); + } + } +} diff --git a/opencv/src/main/java/opencv/OpenCVTest.java b/opencv/src/main/java/example/opencv/OpenCVTest.java similarity index 98% rename from opencv/src/main/java/opencv/OpenCVTest.java rename to opencv/src/main/java/example/opencv/OpenCVTest.java index 1c0a041..0350e7e 100644 --- a/opencv/src/main/java/opencv/OpenCVTest.java +++ b/opencv/src/main/java/example/opencv/OpenCVTest.java @@ -1,4 +1,4 @@ -package opencv; +package example.opencv; import org.opencv.core.Core; import org.opencv.core.Mat; diff --git a/opencv/src/main/java/opencv/Webcam1.java b/opencv/src/main/java/example/opencv/Webcam1.java similarity index 96% rename from opencv/src/main/java/opencv/Webcam1.java rename to opencv/src/main/java/example/opencv/Webcam1.java index 137e32a..7175080 100644 --- a/opencv/src/main/java/opencv/Webcam1.java +++ b/opencv/src/main/java/example/opencv/Webcam1.java @@ -1,4 +1,4 @@ -package opencv; +package example.opencv; import org.opencv.core.Core; import org.opencv.core.Mat; diff --git a/opencv/src/main/java/opencv/Webcam2.java b/opencv/src/main/java/example/opencv/Webcam2.java similarity index 97% rename from opencv/src/main/java/opencv/Webcam2.java rename to opencv/src/main/java/example/opencv/Webcam2.java index 63311b6..2781c24 100644 --- a/opencv/src/main/java/opencv/Webcam2.java +++ b/opencv/src/main/java/example/opencv/Webcam2.java @@ -1,4 +1,4 @@ -package opencv; +package example.opencv; import org.opencv.core.Core; import org.opencv.core.Mat; diff --git a/opencv/src/main/java/opencv/HelloWorldCV.java b/opencv/src/main/java/opencv/HelloWorldCV.java deleted file mode 100644 index a9f32ba..0000000 --- a/opencv/src/main/java/opencv/HelloWorldCV.java +++ /dev/null @@ -1,18 +0,0 @@ -package opencv; - -import lombok.extern.slf4j.Slf4j; -import org.opencv.core.Core; -import org.opencv.core.CvType; -import org.opencv.core.Mat; - -public @Slf4j class HelloWorldCV { - - public static void main(String[] args) { - log.info("Welcome to OpenCV {}", Core.VERSION); - log.info(System.getProperty("java.library.path")); - System.loadLibrary(Core.NATIVE_LIBRARY_NAME); - Mat m = Mat.eye(3, 3, CvType.CV_8UC1); - log.info("m = {}", m.dump()); - } - -} \ No newline at end of file diff --git a/opencv/src/main/resources/logback.xml b/opencv/src/main/resources/logback.xml new file mode 100644 index 0000000..b018511 --- /dev/null +++ b/opencv/src/main/resources/logback.xml @@ -0,0 +1,17 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + diff --git a/rosjava-helloworld/.gitignore b/rosjava-helloworld/.gitignore index 12e7f3c..25dd93d 100644 --- a/rosjava-helloworld/.gitignore +++ b/rosjava-helloworld/.gitignore @@ -2,4 +2,4 @@ .gradle build *.iml -docs/api + diff --git a/rosjava-helloworld/README.md b/rosjava-helloworld/README.md deleted file mode 100644 index 2604bee..0000000 --- a/rosjava-helloworld/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# ROS Java examples - -## Introduction - -This example tries to connect with a remote host to publish information. diff --git a/rosjava-helloworld/build.gradle b/rosjava-helloworld/build.gradle index 1843ee4..c81e53e 100644 --- a/rosjava-helloworld/build.gradle +++ b/rosjava-helloworld/build.gradle @@ -1,11 +1,4 @@ -//Gradle file library ROS Examples -//Author: Juan Antonio Breña Moral - -version = '0.1.0-SNAPSHOT' - -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' +version = '0.1.0' repositories { mavenCentral() @@ -17,72 +10,30 @@ repositories { } dependencies { - compile("org.projectlombok:lombok:1.16.8") - - compile("org.slf4j:slf4j-api:1.7.12") - //compile("ch.qos.logback:logback-classic:1.1.6") - compile("commons-logging:commons-logging:1.2") - - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1") - - compile("org.ros.rosjava_core:rosjava:[0.2,0.3)") - compile("org.ros.rosjava_messages:std_msgs:[0.1,)") - compile("org.ros.rosjava_messages:sensor_msgs:[0.1,)") - compile("org.ros.rosjava_messages:geometry_msgs:[1.11,1.12)") + implementation("org.projectlombok:lombok:1.18.8") - compile("commons-codec:commons-codec:1.9") - compile("commons-httpclient:commons-httpclient:3.1") + implementation("org.slf4j:slf4j-api:1.7.12") + //implementation("ch.qos.logback:logback-classic:1.1.6") + implementation("commons-logging:commons-logging:1.2") -} + implementation("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1") -//Wrapper -task wrapper(type: Wrapper) { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '3.5' -} + implementation("org.ros.rosjava_core:rosjava:[0.2,0.3)") + implementation("org.ros.rosjava_messages:std_msgs:[0.1,)") + implementation("org.ros.rosjava_messages:rosjava_test_msgs:[0.1,)") + implementation("org.ros.rosjava_messages:sensor_msgs:[0.1,)") + implementation("org.ros.rosjava_messages:geometry_msgs:[1.11,1.12)") + implementation("org.ros.rosjava_bootstrap:message_generation:[0.1,)") -//Compile -compileJava { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + implementation("commons-codec:commons-codec:1.9") + implementation("commons-httpclient:commons-httpclient:3.1") } -//Jar jar { - baseName = "${rootProject.name}" manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") - } -} - -buildscript { - repositories { - jcenter() + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) } - dependencies { - classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.0' - } -} - -//Fat Jar -apply plugin: 'com.github.johnrengelman.shadow' - -task fatJar << { - } -fatJar.dependsOn shadowJar - -//Deploy on Brick -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "org.hidetake:gradle-ssh-plugin:2.0.0" - } -} -apply plugin: 'org.hidetake.ssh' - -apply from: 'deploy.gradle' diff --git a/rosjava-helloworld/config.gradle b/rosjava-helloworld/config.gradle index acc1fd7..19626f7 100644 --- a/rosjava-helloworld/config.gradle +++ b/rosjava-helloworld/config.gradle @@ -1,8 +1,5 @@ - -remotes { - ev3dev { - host = '10.0.1.3' - user = 'robot' - password = 'maker' - } +// Subproject configuration +brick.pref { + // Main class // + mainClass = "ListenerTest" } diff --git a/rosjava-helloworld/deploy.gradle b/rosjava-helloworld/deploy.gradle deleted file mode 100644 index 8cb92df..0000000 --- a/rosjava-helloworld/deploy.gradle +++ /dev/null @@ -1,53 +0,0 @@ - -task deploy << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-" + version + "-all.jar", into: "/home/robot/" - } - } -} -deploy.dependsOn clean, fatJar - - -task deployGeneratedFatJar << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-" + version + "-all.jar", into: "/home/robot/" - } - } -} - -task remoteRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -Djava.util.logging.config.file=/home/robot/log-config.properties -Djavax.net.debug=all -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar pistorms1" - execute "java -Djava.util.logging.config.file=/home/robot/log-config.properties -Djavax.net.debug=all -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar pistorms1" - } - } -} - -task remoteRunAndDebug << { - ssh.run { - session(remotes.ev3dev) { - println "java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar 10.0.1.3" - execute "java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -server -jar /home/robot/" + "${rootProject.name}" + "-" + version + "-all.jar 10.0.1.3" - } - } -} - - -task remoteProfilingRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar " - execute "java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar " - } - } -} - -task deployAndRun << { - -} -deployAndRun.dependsOn deploy, remoteRun - -apply from: 'config.gradle' \ No newline at end of file diff --git a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.jar b/rosjava-helloworld/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index cad2fb1..0000000 Binary files a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.jar~Stashed changes b/rosjava-helloworld/gradle/wrapper/gradle-wrapper.jar~Stashed changes deleted file mode 100644 index 6e7f8ec..0000000 Binary files a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.jar~Stashed changes and /dev/null differ diff --git a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.properties b/rosjava-helloworld/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index fb6b5ed..0000000 --- a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Tue Jun 20 09:24:12 BST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-all.zip diff --git a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.properties~Stashed changes b/rosjava-helloworld/gradle/wrapper/gradle-wrapper.properties~Stashed changes deleted file mode 100644 index 6ba3cab..0000000 --- a/rosjava-helloworld/gradle/wrapper/gradle-wrapper.properties~Stashed changes +++ /dev/null @@ -1,6 +0,0 @@ -#Mon Jun 26 23:45:11 BST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip diff --git a/rosjava-helloworld/gradlew b/rosjava-helloworld/gradlew deleted file mode 100755 index 4453cce..0000000 --- a/rosjava-helloworld/gradlew +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env sh - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; -esac - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save ( ) { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi - -exec "$JAVACMD" "$@" diff --git a/rosjava-helloworld/settings.gradle b/rosjava-helloworld/settings.gradle deleted file mode 100644 index 45aa5f0..0000000 --- a/rosjava-helloworld/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This settings file was auto generated by the Gradle buildInit task - * by 'jabrena' at '27/03/17 20:34' with Gradle 2.4 - * - * The settings file is used to specify which projects to include in your build. - * In a single project build this file can be empty or even removed. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user guide at http://gradle.org/docs/2.4/userguide/multi_project_builds.html - */ - -/* -// To declare projects as part of a multi-project build use the 'include' method -include 'shared' -include 'api' -include 'services:webservice' -*/ - -rootProject.name = 'rosjava-helloworld' diff --git a/rosjava-helloworld/src/main/resources/META-INF/MANIFEST.MF b/rosjava-helloworld/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index d5cd930..0000000 --- a/rosjava-helloworld/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,6 +0,0 @@ -Manifest-Version: 1.0 -Implementation-Title: rosjava-helloworld -Implementation-Version: 0.1.0 -Implementation-Vendor: Juan Antonio Breña Moral -Main-Class: ListenerTest - diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..8770cb2 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +rootProject.name = 'examples' + +include 'demo' +include 'demo-2.4.16' +//include 'helloWorldKotlin' +include 'mbeans' +include 'opencv' +include 'rosjava-helloworld' +include 'video' +include 'ev3dev-lang-java' diff --git a/video/.gitignore b/video/.gitignore index 25dd93d..9ef9604 100644 --- a/video/.gitignore +++ b/video/.gitignore @@ -1,5 +1,2 @@ -.idea -.gradle build -*.iml diff --git a/video/build.gradle b/video/build.gradle index 5d7716f..0721368 100644 --- a/video/build.gradle +++ b/video/build.gradle @@ -1,58 +1,24 @@ -//Gradle file library ev3dev-lang-java / examples -//Author: Juan Antonio Breña Moral - -version = '0.1.0' - -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' +version = '0.3.0' repositories { - flatDir { - dirs 'libs' - } mavenCentral() maven { url 'https://jitpack.io' } } dependencies { - compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.5-SNAPSHOT") - compile 'org.jcodec:jcodec:0.2.0' - compile 'org.jcodec:jcodec-javase:0.2.0' -} + implementation('org.jcodec:jcodec:0.2.3') + implementation('org.jcodec:jcodec-javase:0.2.3') -//Compile -compileJava { - sourceCompatibility = 1.8 - targetCompatibility = 1.8 + annotationProcessor('org.projectlombok:lombok:1.18.8') + compileOnly("org.projectlombok:lombok:1.18.8") + testCompileOnly("org.projectlombok:lombok:1.18.8") } -//Jar jar { - baseName = "${rootProject.name}" -} - -//Fat Jar -task fatJar(type: Jar) { - baseName = "${rootProject.name}" + "-all" manifest { - from file("${projectDir}/src/main/resources/META-INF/MANIFEST.MF") + attributes("Implementation-Title": "EV3Dev-lang-java / Demos for 0.7.0", + "Implementation-Version": project.version, + "Implementation-Vendor": "Juan Antonio Breña Moral" + ) } - from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } - with jar } - -//Deploy on Brick -buildscript { - repositories { - maven { - url "https://plugins.gradle.org/m2/" - } - } - dependencies { - classpath "org.hidetake:gradle-ssh-plugin:2.0.0" - } -} -apply plugin: 'org.hidetake.ssh' - -apply from: 'deploy.gradle' \ No newline at end of file diff --git a/video/config.gradle b/video/config.gradle new file mode 100644 index 0000000..2690cf1 --- /dev/null +++ b/video/config.gradle @@ -0,0 +1,5 @@ +// Subproject configuration +brick.pref { + // Main class // + mainClass = "ev3dev.actuators.lcd.VideoTest" +} diff --git a/video/deploy.gradle b/video/deploy.gradle deleted file mode 100644 index 22d6619..0000000 --- a/video/deploy.gradle +++ /dev/null @@ -1,31 +0,0 @@ - -remotes { - ev3dev { - host = '192.168.1.206' - user = 'robot' - password = 'maker' - } -} - -task deploy << { - ssh.run { - session(remotes.ev3dev) { - put from: "./build/libs/" + "${rootProject.name}" + "-all-" + version + ".jar", into: "/home/robot/" - } - } -} -deploy.dependsOn clean, fatJar - -task remoteRun << { - ssh.run { - session(remotes.ev3dev) { - println "java -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar" - execute "java -server -jar /home/robot/" + "${rootProject.name}" + "-all-" + version + ".jar" - } - } -} - -task deployAndRun << { - -} -deployAndRun.dependsOn deploy, remoteRun \ No newline at end of file diff --git a/video/gradle/wrapper/gradle-wrapper.jar b/video/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index b5166da..0000000 Binary files a/video/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/video/gradle/wrapper/gradle-wrapper.properties b/video/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 2763f54..0000000 --- a/video/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Sat May 27 13:47:29 BST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip diff --git a/video/gradlew b/video/gradlew deleted file mode 100755 index 91a7e26..0000000 --- a/video/gradlew +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/video/gradlew.bat b/video/gradlew.bat deleted file mode 100644 index aec9973..0000000 --- a/video/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/video/libs/jcodec-0.2.0.jar b/video/libs/jcodec-0.2.0.jar deleted file mode 100644 index 6aa6f21..0000000 Binary files a/video/libs/jcodec-0.2.0.jar and /dev/null differ diff --git a/video/libs/jcodec-javase-0.2.0.jar b/video/libs/jcodec-javase-0.2.0.jar deleted file mode 100644 index 2ad5dc0..0000000 Binary files a/video/libs/jcodec-javase-0.2.0.jar and /dev/null differ diff --git a/video/lombok.config b/video/lombok.config new file mode 100644 index 0000000..f4809e2 --- /dev/null +++ b/video/lombok.config @@ -0,0 +1,2 @@ +lombok.nonNull.exceptionType = IllegalArgumentException +lombok.log.fieldName = LOGGER diff --git a/video/settings.gradle b/video/settings.gradle deleted file mode 100644 index 4ace687..0000000 --- a/video/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * This settings file was auto generated by the Gradle buildInit task - * by 'jabrena' at '27/05/17 13:40' with Gradle 2.4 - * - * The settings file is used to specify which projects to include in your build. - * In a single project build this file can be empty or even removed. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user guide at http://gradle.org/docs/2.4/userguide/multi_project_builds.html - */ - -/* -// To declare projects as part of a multi-project build use the 'include' method -include 'shared' -include 'api' -include 'services:webservice' -*/ - -rootProject.name = 'video' diff --git a/video/src/main/java/ev3dev/actuators/lcd/JarResource.java b/video/src/main/java/ev3dev/actuators/lcd/JarResource.java index 86bb469..a98914a 100755 --- a/video/src/main/java/ev3dev/actuators/lcd/JarResource.java +++ b/video/src/main/java/ev3dev/actuators/lcd/JarResource.java @@ -43,9 +43,9 @@ public static String export(final String resourceName) throws IOException { public static void delete(final String resourceName){ final File file = new File(resourceName); if(file.delete()){ - log.info("{} is deleted!", file.getName()); + LOGGER.info("{} is deleted!", file.getName()); }else{ - log.trace("Delete operation is failed."); + LOGGER.trace("Delete operation is failed."); } } diff --git a/video/src/main/java/ev3dev/actuators/lcd/VideoTest.java b/video/src/main/java/ev3dev/actuators/lcd/VideoTest.java index 8ba8ae7..003aca8 100755 --- a/video/src/main/java/ev3dev/actuators/lcd/VideoTest.java +++ b/video/src/main/java/ev3dev/actuators/lcd/VideoTest.java @@ -1,8 +1,10 @@ package ev3dev.actuators.lcd; -import ev3dev.actuators.ev3.lcd.EV3GraphicsLCD; +import ev3dev.actuators.LCD; import lejos.hardware.lcd.GraphicsLCD; -import org.jcodec.api.awt.AWTFrameGrab8Bit; +import org.jcodec.api.FrameGrab; +import org.jcodec.common.model.Picture; +import org.jcodec.scale.AWTUtil; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; @@ -13,7 +15,7 @@ public class VideoTest { - public static GraphicsLCD lcd = new EV3GraphicsLCD(); + public static GraphicsLCD lcd = LCD.getInstance(); public static void main(final String[] args) throws Exception { @@ -24,7 +26,8 @@ public static void main(final String[] args) throws Exception { List list = new ArrayList<>(); for (int i = 0; i < 20; i++) { - BufferedImage image = AWTFrameGrab8Bit.getFrame(new File("giphy.mp4"), i*6); + Picture pic = FrameGrab.getFrameFromFile(new File("giphy.mp4"), i*6); + BufferedImage image = AWTUtil.toBufferedImage(pic); int w = image.getWidth(); int h = image.getHeight(); diff --git a/video/src/main/resources/META-INF/MANIFEST.MF b/video/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index 764af3f..0000000 --- a/video/src/main/resources/META-INF/MANIFEST.MF +++ /dev/null @@ -1,7 +0,0 @@ -Manifest-Version: 1.0 -Implementation-Title: EV3Dev-lang-java / examples -Implementation-Version: 0.3.0 -Implementation-Vendor: Juan Antonio Breña Moral -Main-Class: ev3dev.actuators.lcd.VideoTest - -