summaryrefslogtreecommitdiff
path: root/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/io/trygvis/soilmoisture/SmDevice.java')
-rw-r--r--app/src/main/java/io/trygvis/soilmoisture/SmDevice.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java b/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
index 1074dd9..d56f33e 100644
--- a/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
+++ b/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
@@ -6,8 +6,11 @@ import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
+import io.trygvis.android.Optional;
import io.trygvis.android.bt.BtDevice;
+import static io.trygvis.android.Optional.empty;
+import static io.trygvis.android.Optional.of;
import static io.trygvis.soilmoisture.SmDevice.SmCmdCode.GET_SENSOR_COUNT;
import static io.trygvis.soilmoisture.SmDevice.SmCmdCode.GET_SENSOR_NAME;
import static io.trygvis.soilmoisture.SmDevice.SmCmdCode.GET_VALUE;
@@ -75,7 +78,25 @@ class SmDevice {
return sensors;
}
+ public Optional<SmSensor> getSensorByIndex(int index) {
+ if (!isUseful()) {
+ throw new IllegalStateException("Not a useful device");
+ }
+
+ for (SmSensor sensor : sensors) {
+ if (sensor.getIndex() == index) {
+ return of(sensor);
+ }
+ }
+
+ return empty();
+ }
+
void addSensor(SmSensor sensor) {
+ if (getSensorByIndex(sensor.index).isPresent()) {
+ throw new IllegalStateException("This device already contains a sensor with index=" + sensor.index);
+ }
+
sensors.add(sensor);
}