aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/io/trygvis/soilmoisture/SmDevice.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/io/trygvis/soilmoisture/SmDevice.java')
-rw-r--r--app/src/main/java/io/trygvis/soilmoisture/SmDevice.java17
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