diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2015-01-18 12:52:17 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2015-01-18 12:52:17 +0100 |
commit | fe238450f161a503d61c5ae59ecdd82c60c0e9ec (patch) | |
tree | 075ac1aa9b90d6895505d203a806d262bc41f273 /app/src/main/java/io/trygvis/soilmoisture/SmDevice.java | |
parent | f3288422d8dec949fcad33a84e413d8aa45f4500 (diff) | |
download | io.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.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); } |