From 138b49247a72890df66af9a01e1179dab72a4b71 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Tue, 20 Jan 2015 00:19:22 +0100 Subject: 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. --- app/src/main/java/io/trygvis/soilmoisture/SmDevice.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (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 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 parseResponse(byte[] bytes, SmCmdCode code, Class 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 -- cgit v1.2.3