From fe238450f161a503d61c5ae59ecdd82c60c0e9ec Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Sun, 18 Jan 2015 12:52:17 +0100 Subject: BtPromise: Adding a distinction between successful and failure. 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. --- .../main/java/io/trygvis/soilmoisture/SmDevice.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'app/src/main/java/io/trygvis/soilmoisture/SmDevice.java') 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 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); } -- cgit v1.2.3