diff options
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 |