Skip to content

Commit 4e58f60

Browse files
committed
TempRateResponse: fix percentage parsing
1 parent 8752d21 commit 4e58f60

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

messages/src/main/java/com/jwoglom/pumpx2/pump/messages/response/currentStatus/TempRateResponse.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ public class TempRateResponse extends Message {
2424
private long duration;
2525

2626
public TempRateResponse() {}
27+
public TempRateResponse(byte[] raw) {
28+
parse(raw);
29+
}
2730

2831
public TempRateResponse(boolean active, int percentage, long startTimeRaw, long duration) {
2932
this.cargo = buildCargo(active, percentage, startTimeRaw, duration);
@@ -38,7 +41,7 @@ public void parse(byte[] raw) {
3841
Preconditions.checkArgument(raw.length == props().size());
3942
this.cargo = raw;
4043
this.active = raw[0] != 0;
41-
this.percentage = raw[1];
44+
this.percentage = (int) (raw[1] & 255);
4245
this.startTimeRaw = Bytes.readUint32(raw, 2);
4346
this.duration = Bytes.readUint32(raw, 6);
4447

messages/src/test/java/com/jwoglom/pumpx2/pump/messages/response/currentStatus/TempRateResponseTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import static com.jwoglom.pumpx2.pump.messages.MessageTester.assertHexEquals;
44

5+
import static org.junit.Assert.assertEquals;
6+
import static org.junit.Assert.assertTrue;
7+
58
import com.jwoglom.pumpx2.pump.messages.MessageTester;
69
import com.jwoglom.pumpx2.pump.messages.bluetooth.CharacteristicUUID;
710

@@ -26,4 +29,36 @@ public void testTempRateResponseNotActive() throws DecoderException {
2629

2730
assertHexEquals(expected.getCargo(), parsedRes.getCargo());
2831
}
32+
33+
@Test
34+
public void testTempRateResponse_values() {
35+
TempRateResponse r;
36+
37+
r = new TempRateResponse(
38+
new byte[]{1,-6,-38,0,-13,31,-124,3,0,0}
39+
);
40+
assertTrue(r.getActive());
41+
assertEquals(900, r.getDuration());
42+
assertEquals(536019162, r.getStartTimeRaw());
43+
assertEquals(250, r.getPercentage());
44+
45+
r = new TempRateResponse(
46+
new byte[]{1,-11,-99,5,-13,31,-124,3,0,0}
47+
);
48+
assertTrue(r.getActive());
49+
assertEquals(900, r.getDuration());
50+
assertEquals(536020381, r.getStartTimeRaw());
51+
assertEquals(245, r.getPercentage());
52+
53+
54+
r = new TempRateResponse(
55+
new byte[]{1,-56,57,5,-13,31,8,7,0,0}
56+
);
57+
assertTrue(r.getActive());
58+
assertEquals(1800, r.getDuration());
59+
assertEquals(536020281, r.getStartTimeRaw());
60+
assertEquals(200, r.getPercentage());
61+
62+
63+
}
2964
}

0 commit comments

Comments
 (0)