diff --git a/build.gradle b/build.gradle
index 10a9a5f..9e21e7d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,4 @@
-version = '0.1.0'
+version = '0.2.0-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'eclipse'
@@ -10,14 +10,11 @@ repositories {
}
dependencies {
- compile("com.github.ev3dev-lang-java:lejos-commons:v0.5.1-SNAPSHOT")
- compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1-SNAPSHOT")
- compile("net.logstash.logback:logstash-logback-encoder:4.7")
+ compile("ch.qos.logback:logback-classic:1.2.3")
+ compile("com.github.ev3dev-lang-java:lejos-commons:v0.5.0")
+ compile("com.github.ev3dev-lang-java:ev3dev-lang-java:v0.6.1")
- testCompile("junit:junit:4.12")
- testCompile("org.hamcrest:hamcrest-junit:2.0.0.0")
- testCompile("org.mockito:mockito-core:2.7.22")
- testCompile("org.powermock:powermock-module-junit4:1.6.6")
+ compile("net.logstash.logback:logstash-logback-encoder:4.7")
}
//Compile
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT.zip b/releases/batteryMonitor-0.2.0-SNAPSHOT.zip
new file mode 100644
index 0000000..b3f2e95
Binary files /dev/null and b/releases/batteryMonitor-0.2.0-SNAPSHOT.zip differ
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT/README.md b/releases/batteryMonitor-0.2.0-SNAPSHOT/README.md
new file mode 100644
index 0000000..199d4f1
--- /dev/null
+++ b/releases/batteryMonitor-0.2.0-SNAPSHOT/README.md
@@ -0,0 +1,14 @@
+# Technical documentation
+
+BatteryMonitor is a simple battery monitor
+to protect your robots when has battery has a low level.
+
+The release batteryMonitor will includes:
+
++ A fatJar with the solution to measure the battery
++ Linux service (batteryMonitor-service.sh) to be installed on `/etc/init.d`
++ Scripts to Start & Stop the service
+
+The solution will be managed by the Installer:
+https://github.com/ev3dev-lang-java/installer
+
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT/batteryMonitor-all-0.2.0-SNAPSHOT.jar b/releases/batteryMonitor-0.2.0-SNAPSHOT/batteryMonitor-all-0.2.0-SNAPSHOT.jar
new file mode 100644
index 0000000..7bad597
Binary files /dev/null and b/releases/batteryMonitor-0.2.0-SNAPSHOT/batteryMonitor-all-0.2.0-SNAPSHOT.jar differ
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT/batteryMonitor-service.sh b/releases/batteryMonitor-0.2.0-SNAPSHOT/batteryMonitor-service.sh
new file mode 100644
index 0000000..c755277
--- /dev/null
+++ b/releases/batteryMonitor-0.2.0-SNAPSHOT/batteryMonitor-service.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+# Battery Monitor
+#
+# description: A Java battery monitor to protect EV3Dev hardware
+
+case $1 in
+ start)
+ /bin/bash /home/robot/batteryMonitor/start.sh
+ ;;
+ stop)
+ /bin/bash /home/robot/batteryMonitor/stop.sh
+ ;;
+ restart)
+ /bin/bash /home/robot/batteryMonitor/stop.sh
+ /bin/bash /home/robot/batteryMonitor/start.sh
+ ;;
+esac
+exit 0
\ No newline at end of file
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT/logback.xml b/releases/batteryMonitor-0.2.0-SNAPSHOT/logback.xml
new file mode 100644
index 0000000..f7ddee1
--- /dev/null
+++ b/releases/batteryMonitor-0.2.0-SNAPSHOT/logback.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+ /home/robot/batteryMonitor/logs/log-${byDay}.log
+ true
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT/start.sh b/releases/batteryMonitor-0.2.0-SNAPSHOT/start.sh
new file mode 100644
index 0000000..926bbf7
--- /dev/null
+++ b/releases/batteryMonitor-0.2.0-SNAPSHOT/start.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+java -server -Dlogback.configurationFile=/home/robot/batteryMonitor/logback.xml -jar /home/robot/batteryMonitor/batteryMonitor-all-0.2.0-SNAPSHOT.jar &
+
diff --git a/releases/batteryMonitor-0.2.0-SNAPSHOT/stop.sh b/releases/batteryMonitor-0.2.0-SNAPSHOT/stop.sh
new file mode 100644
index 0000000..4eba89a
--- /dev/null
+++ b/releases/batteryMonitor-0.2.0-SNAPSHOT/stop.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+pid=`ps aux | grep batteryMonitor | awk '{print $2}'`
+kill -9 $pid
diff --git a/scripts/README.md b/scripts/README.md
new file mode 100644
index 0000000..199d4f1
--- /dev/null
+++ b/scripts/README.md
@@ -0,0 +1,14 @@
+# Technical documentation
+
+BatteryMonitor is a simple battery monitor
+to protect your robots when has battery has a low level.
+
+The release batteryMonitor will includes:
+
++ A fatJar with the solution to measure the battery
++ Linux service (batteryMonitor-service.sh) to be installed on `/etc/init.d`
++ Scripts to Start & Stop the service
+
+The solution will be managed by the Installer:
+https://github.com/ev3dev-lang-java/installer
+
diff --git a/scripts/batteryMonitor-service.sh b/scripts/batteryMonitor-service.sh
index c755277..c1a5b9f 100644
--- a/scripts/batteryMonitor-service.sh
+++ b/scripts/batteryMonitor-service.sh
@@ -15,4 +15,4 @@ case $1 in
/bin/bash /home/robot/batteryMonitor/start.sh
;;
esac
-exit 0
\ No newline at end of file
+exit 0
diff --git a/scripts/platform.sh b/scripts/platform.sh
new file mode 100644
index 0000000..744b98b
--- /dev/null
+++ b/scripts/platform.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+EV3="EV3"
+BRICKPI="BRICKPI"
+PISTORMS="PISTORMS"
+UNKNOWN="UNKNOWN"
+PLATFORM=$UNKNOWN
+
+#1. Detect platform
+if [ -d "/sys/class/power_supply/legoev3-battery" ]; then
+ echo "The user has a EV3 Brick"
+ PLATFORM=$EV3
+elif [ -d "/sys/class/power_supply/brickpi-battery" ]; then
+ echo "The user has a BrickPi+"
+ PLATFORM=$BRICKPI
+elif [ -d "/sys/class/power_supply/pistorms-battery" ]; then
+ echo "The user has a PiStorms"
+ PLATFORM=$PISTORMS
+fi
+echo "Platform detected: $PLATFORM"
+echo
diff --git a/scripts/start.sh b/scripts/start.sh
index a32dd1e..9678d07 100644
--- a/scripts/start.sh
+++ b/scripts/start.sh
@@ -1,4 +1,21 @@
#!/bin/bash
-java -server -Dlogback.configurationFile=/home/robot/batteryMonitor/logback.xml -jar /home/robot/batteryMonitor/batteryMonitor-all-0.1.0.jar &
+source "platform.sh"
+if [ "$PLATFORM" == "$EV3" ]; then
+ echo "Executing a Script for EV3"
+ cd /sys/class/power_supply/legoev3-battery
+ while true; do
+ voltage=`cat voltage_now`
+ echo $voltage
+ if [ $voltage -lt 7500000 ]; then
+ break;
+ fi
+ sleep 1m
+ done
+ shutdown now
+elif [ "$PLATFORM" == "$BRICKPI" ]; then
+ java -server -Dlogback.configurationFile=/home/robot/batteryMonitor/logback.xml -jar /home/robot/batteryMonitor/batteryMonitor-all-0.2.0-SNAPSHOT.jar &
+elif [ "$PLATFORM" == "$PISTORMS" ]; then
+ java -server -Dlogback.configurationFile=/home/robot/batteryMonitor/logback.xml -jar /home/robot/batteryMonitor/batteryMonitor-all-0.2.0-SNAPSHOT.jar &
+fi
diff --git a/scripts/stop.sh b/scripts/stop.sh
index 4eba89a..7e6b8dd 100644
--- a/scripts/stop.sh
+++ b/scripts/stop.sh
@@ -1,4 +1,14 @@
#!/bin/bash
-pid=`ps aux | grep batteryMonitor | awk '{print $2}'`
-kill -9 $pid
+source "platform.sh"
+
+if [ "$PLATFORM" == "$EV3" ]; then
+ echo "The memory usage is minimum"
+elif [ "$PLATFORM" == "$BRICKPI" ]; then
+ pid=`ps aux | grep batteryMonitor | awk '{print $2}'`
+ kill -9 $pid
+elif [ "$PLATFORM" == "$PISTORMS" ]; then
+ pid=`ps aux | grep batteryMonitor | awk '{print $2}'`
+ kill -9 $pid
+fi
+
diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF
index 196b3e7..91183b0 100644
--- a/src/main/java/META-INF/MANIFEST.MF
+++ b/src/main/java/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Implementation-Title: EV3Dev-lang-java
-Implementation-Version: 0.5.0
+Implementation-Version: 0.1.0
Implementation-Vendor: Juan Antonio BreƱa Moral
Main-Class: ev3dev.utils.monitor.BatteryMonitorApp
diff --git a/src/main/java/ev3dev/utils/monitor/BatteryExecutor.java b/src/main/java/ev3dev/utils/monitor/BatteryExecutor.java
index 2ee2b7a..9f6a029 100644
--- a/src/main/java/ev3dev/utils/monitor/BatteryExecutor.java
+++ b/src/main/java/ev3dev/utils/monitor/BatteryExecutor.java
@@ -1,11 +1,13 @@
package ev3dev.utils.monitor;
-import lombok.extern.slf4j.Slf4j;
import ev3dev.utils.Shell;
+import org.slf4j.Logger;
import java.util.concurrent.*;
-public @Slf4j class BatteryExecutor {
+public class BatteryExecutor {
+
+ private static final Logger log = org.slf4j.LoggerFactory.getLogger(BatteryMonitorApp.class);
private final String COMMAND_SHUTDOWN = "sudo shutdown now";
diff --git a/src/main/java/ev3dev/utils/monitor/BatteryMonitorApp.java b/src/main/java/ev3dev/utils/monitor/BatteryMonitorApp.java
index b76a517..c599c15 100644
--- a/src/main/java/ev3dev/utils/monitor/BatteryMonitorApp.java
+++ b/src/main/java/ev3dev/utils/monitor/BatteryMonitorApp.java
@@ -1,8 +1,10 @@
package ev3dev.utils.monitor;
-import lombok.extern.slf4j.Slf4j;
+import org.slf4j.Logger;
-public @Slf4j class BatteryMonitorApp {
+public class BatteryMonitorApp {
+
+ private static final Logger log = org.slf4j.LoggerFactory.getLogger(BatteryMonitorApp.class);
//TODO Add support to send parameters by command line
public static void main(final String... args) throws Exception {
diff --git a/src/main/java/ev3dev/utils/monitor/BatteryProvider.java b/src/main/java/ev3dev/utils/monitor/BatteryProvider.java
index e2f860d..98adc74 100644
--- a/src/main/java/ev3dev/utils/monitor/BatteryProvider.java
+++ b/src/main/java/ev3dev/utils/monitor/BatteryProvider.java
@@ -2,7 +2,6 @@
import ev3dev.sensors.Battery;
import lejos.hardware.Power;
-import lombok.extern.slf4j.Slf4j;
public class BatteryProvider {
diff --git a/src/main/java/ev3dev/utils/monitor/BatteryTask.java b/src/main/java/ev3dev/utils/monitor/BatteryTask.java
index 528107a..efe219c 100644
--- a/src/main/java/ev3dev/utils/monitor/BatteryTask.java
+++ b/src/main/java/ev3dev/utils/monitor/BatteryTask.java
@@ -1,15 +1,15 @@
package ev3dev.utils.monitor;
-import lombok.extern.slf4j.Slf4j;
-import ev3dev.sensors.Battery;
-import lejos.hardware.Power;
+import org.slf4j.Logger;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
-public @Slf4j class BatteryTask implements Callable {
+public class BatteryTask implements Callable {
+
+ private static final Logger log = org.slf4j.LoggerFactory.getLogger(BatteryTask.class);
private static int DEFAULT_VOLTAGE_THRESHOLD = 7500;
private static int DEFAULT_VOLTAGE_MEASURE_INTERVAL = 1;
diff --git a/src/test/java/ev3dev/mocks/metatest/InsideClass.java b/src/test/java/ev3dev/mocks/metatest/InsideClass.java
deleted file mode 100644
index a5ce9f1..0000000
--- a/src/test/java/ev3dev/mocks/metatest/InsideClass.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ev3dev.mocks.metatest;
-
-public class InsideClass {
-
-
- public InsideClass(){
-
- }
-
- public int methodA(){
- return 10;
- }
-}
diff --git a/src/test/java/ev3dev/mocks/metatest/UpperClass.java b/src/test/java/ev3dev/mocks/metatest/UpperClass.java
deleted file mode 100644
index 74fc316..0000000
--- a/src/test/java/ev3dev/mocks/metatest/UpperClass.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package ev3dev.mocks.metatest;
-
-public class UpperClass {
-
- final InsideClass insideClass;
-
- public UpperClass(final InsideClass insideClass){
- this.insideClass = insideClass;
- }
-
- public int methodA(){
- return this.insideClass.methodA() * 2;
- }
-
-}
diff --git a/src/test/java/ev3dev/mocks/metatest/UpperClassMockTest.java b/src/test/java/ev3dev/mocks/metatest/UpperClassMockTest.java
deleted file mode 100644
index 6e55601..0000000
--- a/src/test/java/ev3dev/mocks/metatest/UpperClassMockTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package ev3dev.mocks.metatest;
-
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-@RunWith(MockitoJUnitRunner.class)
-public @Slf4j class UpperClassMockTest {
-
- @Mock
- InsideClass insideClass;
-
- @InjectMocks
- UpperClass upperClass;
-
- @Test
- public void test() throws Exception {
-
- given(insideClass.methodA()).willReturn(20);
-
- final int result = upperClass.methodA();
- assertThat(result, is(40));
-
- verify(insideClass, times(1)).methodA();
-
- }
-
-}