diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2014-12-06 19:25:51 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2014-12-06 19:25:51 +0100 |
commit | 76b17543bee2c38995fca07e21d5b271eddb7369 (patch) | |
tree | 7e3e8067a8327ffc5ab6ddca09da0989fd0db0f2 /app/src/main/java/no/topi/fiken/display/FikenStatusPanel.java | |
parent | bb59449fbcbb46ba018313c51150924e7aec3be0 (diff) | |
download | fiken-display-android-76b17543bee2c38995fca07e21d5b271eddb7369.tar.gz fiken-display-android-76b17543bee2c38995fca07e21d5b271eddb7369.tar.bz2 fiken-display-android-76b17543bee2c38995fca07e21d5b271eddb7369.tar.xz fiken-display-android-76b17543bee2c38995fca07e21d5b271eddb7369.zip |
o Adding seek bars to each gauge. Sending updates to the device.
Diffstat (limited to 'app/src/main/java/no/topi/fiken/display/FikenStatusPanel.java')
-rw-r--r-- | app/src/main/java/no/topi/fiken/display/FikenStatusPanel.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/app/src/main/java/no/topi/fiken/display/FikenStatusPanel.java b/app/src/main/java/no/topi/fiken/display/FikenStatusPanel.java new file mode 100644 index 0000000..fb7f5e1 --- /dev/null +++ b/app/src/main/java/no/topi/fiken/display/FikenStatusPanel.java @@ -0,0 +1,68 @@ +package no.topi.fiken.display; + +import android.util.Log; + +import static no.topi.fiken.display.DefaultDisplayService.toHexString; + +public class FikenStatusPanel { + private final static String TAG = DefaultDisplayService.class.getSimpleName(); + + public static final byte + FSP_CMD_GET_GAUGE_COUNT = (byte) 0x01, + FSP_CMD_SET_GAUGE = (byte) 0x02, + FSP_CMD_GET_GAUGE = (byte) 0x03, + FSP_CMD_FAIL = (byte) 0xff; + + private Integer[] gauges; + + public int gaugeCount() { + return gauges != null ? gauges.length : 0; + } + + public Integer get(int gauge) { + return gauges[gauge]; + } + + public void update(byte[] data) { + Log.d(TAG, "data=" + toHexString(data)); + byte len = data[0]; + byte code = data[1]; + + switch (code) { + case FSP_CMD_GET_GAUGE_COUNT: + byte count = data[2]; + gauges = new Integer[count]; + Log.d(TAG, "Gauge count=" + count); + break; + case FSP_CMD_GET_GAUGE: + byte gauge = data[2]; + byte value = data[3]; + Log.d(TAG, "Gauge #" + gauge + ", value=" + value); + if (gauge < gauges.length) { + gauges[gauge] = 0xff & value; + } + break; + case FSP_CMD_FAIL: + Log.e(TAG, "FSP_CMD_FAIL"); + break; + case FSP_CMD_SET_GAUGE: + // ignored + break; + default: + Log.w(TAG, "Unknown code: " + code); + break; + } + } + + public static byte[] getGaugeCountReq() { + return new byte[]{FSP_CMD_GET_GAUGE_COUNT}; + } + + public static byte[] getGaugeValueReq(byte gauge) { + return new byte[]{FSP_CMD_GET_GAUGE, gauge}; + } + + public static byte[] setGaugeValueReq(byte gauge, byte value) { + return new byte[]{FSP_CMD_SET_GAUGE, gauge, value}; + } +} |