diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2015-01-20 00:19:22 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2015-01-20 00:19:22 +0100 |
commit | 138b49247a72890df66af9a01e1179dab72a4b71 (patch) | |
tree | 1148ba8af422f04fd743b244c11c1e1aff9bd9de /app/src/main/java/io/trygvis/soilmoisture/SmDevice.java | |
parent | 92872d1063c228abfccd6b585801fa83528e1a28 (diff) | |
download | io.trygvis.soilmoisture-android-138b49247a72890df66af9a01e1179dab72a4b71.tar.gz io.trygvis.soilmoisture-android-138b49247a72890df66af9a01e1179dab72a4b71.tar.bz2 io.trygvis.soilmoisture-android-138b49247a72890df66af9a01e1179dab72a4b71.tar.xz io.trygvis.soilmoisture-android-138b49247a72890df66af9a01e1179dab72a4b71.zip |
o Adding a way to append promises to promises.
o Reading each sensors name when probing a device.
o Enabling probing on long presses on already probed devices. Is probably useful to update the local information when other handsets has updated the device's values.
Diffstat (limited to 'app/src/main/java/io/trygvis/soilmoisture/SmDevice.java')
-rw-r--r-- | app/src/main/java/io/trygvis/soilmoisture/SmDevice.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java b/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java index d56f33e..bf2b5f3 100644 --- a/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java +++ b/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java @@ -3,6 +3,7 @@ package io.trygvis.soilmoisture; import android.util.Log; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -11,6 +12,7 @@ import io.trygvis.android.bt.BtDevice; import static io.trygvis.android.Optional.empty; import static io.trygvis.android.Optional.of; +import static io.trygvis.android.bt.BtUtils.toHexString; 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; @@ -114,7 +116,7 @@ class SmDevice { // Message parsing and handling. // ----------------------------------------------------------------------- - @SuppressWarnings({"unchecked", "StatementWithEmptyBody"}) + @SuppressWarnings({"unchecked", "StatementWithEmptyBody", "UnusedParameters"}) public static <T> T parseResponse(byte[] bytes, SmCmdCode code, Class<T> klass) { byte c = bytes[0]; @@ -130,6 +132,7 @@ class SmDevice { } else if (c == GET_WARNING_VALUE.code) { } else if (c == SET_SENSOR_NAME.code) { } else if (c == GET_SENSOR_NAME.code) { + return (T) new GetSensorNameRes(bytes); } throw new RuntimeException("Unknown code: " + c); @@ -151,6 +154,18 @@ class SmDevice { } } + public static class GetSensorNameRes { + public final String name; + + public GetSensorNameRes(byte[] bytes) { + int count = bytes[1]; + + Log.i(TAG, "count=" + count + ", bytes=" + toHexString(bytes)); + + name = new String(bytes, 2, Math.min(bytes.length - 1, count), StandardCharsets.UTF_8); + } + } + public static byte[] createGetSensorCountReq() { return new byte[]{ GET_SENSOR_COUNT.code |