summaryrefslogtreecommitdiff
path: root/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2015-01-18 12:52:17 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2015-01-18 12:52:17 +0100
commitfe238450f161a503d61c5ae59ecdd82c60c0e9ec (patch)
tree075ac1aa9b90d6895505d203a806d262bc41f273 /app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
parentf3288422d8dec949fcad33a84e413d8aa45f4500 (diff)
downloadio.trygvis.soilmoisture-android-fe238450f161a503d61c5ae59ecdd82c60c0e9ec.tar.gz
io.trygvis.soilmoisture-android-fe238450f161a503d61c5ae59ecdd82c60c0e9ec.tar.bz2
io.trygvis.soilmoisture-android-fe238450f161a503d61c5ae59ecdd82c60c0e9ec.tar.xz
io.trygvis.soilmoisture-android-fe238450f161a503d61c5ae59ecdd82c60c0e9ec.zip
BtPromise: Adding a distinction between successful and failure.1.0
o Chain can now call fail() instead of stop() to signal failure. o The finally handlers can be changed to get this info later. o Should probably make all callbacks take the BtDevice as a callback instead of BluetoothGatt and make the gatt instance available through the device. This way state can be kept in the device's tag. BtPromise: always discover services when operating inside a connection.
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);
}