diff options
Diffstat (limited to 'app/src/main/java/io/trygvis/soilmoisture/SmDevice.java')
-rw-r--r-- | app/src/main/java/io/trygvis/soilmoisture/SmDevice.java | 21 |
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); } |