Skip to content

Commit 5aa848d

Browse files
committed
EnterFillTubingMode
1 parent f4edc81 commit 5aa848d

File tree

5 files changed

+153
-0
lines changed

5 files changed

+153
-0
lines changed

messages/src/main/java/com/jwoglom/pumpx2/pump/messages/Messages.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,8 @@
154154
import com.jwoglom.pumpx2.pump.messages.response.control.ResumePumpingResponse;
155155
import com.jwoglom.pumpx2.pump.messages.request.control.ChangeControlIQSettingsRequest;
156156
import com.jwoglom.pumpx2.pump.messages.response.control.ChangeControlIQSettingsResponse;
157+
import com.jwoglom.pumpx2.pump.messages.request.control.EnterFillTubingModeRequest;
158+
import com.jwoglom.pumpx2.pump.messages.response.control.EnterFillTubingModeResponse;
157159
// IMPORT_END
158160
import com.jwoglom.pumpx2.shared.L;
159161

@@ -241,6 +243,7 @@ public enum Messages {
241243
STOP_TEMP_RATE(StopTempRateRequest.class, StopTempRateResponse.class),
242244
RESUME_PUMPING(ResumePumpingRequest.class, ResumePumpingResponse.class),
243245
CHANGE_CONTROL_IQ_SETTINGS(ChangeControlIQSettingsRequest.class, ChangeControlIQSettingsResponse.class),
246+
ENTER_FILL_TUBING_MODE(EnterFillTubingModeRequest.class, EnterFillTubingModeResponse.class),
244247
// MESSAGES_END
245248
;
246249

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.jwoglom.pumpx2.pump.messages.request.control;
2+
3+
import com.google.common.base.Preconditions;
4+
import com.jwoglom.pumpx2.pump.messages.bluetooth.Characteristic;
5+
import com.jwoglom.pumpx2.pump.messages.helpers.Bytes;
6+
import com.jwoglom.pumpx2.pump.messages.Message;
7+
import com.jwoglom.pumpx2.pump.messages.MessageType;
8+
import com.jwoglom.pumpx2.pump.messages.annotations.MessageProps;
9+
import com.jwoglom.pumpx2.pump.messages.response.control.EnterFillTubingModeResponse;
10+
11+
@MessageProps(
12+
opCode=-108,
13+
size=0,
14+
type=MessageType.REQUEST,
15+
characteristic=Characteristic.CONTROL,
16+
signed=true,
17+
modifiesInsulinDelivery=true,
18+
response=EnterFillTubingModeResponse.class
19+
)
20+
public class EnterFillTubingModeRequest extends Message {
21+
public EnterFillTubingModeRequest() {
22+
this.cargo = EMPTY;
23+
}
24+
25+
public void parse(byte[] raw) {
26+
raw = this.removeSignedRequestHmacBytes(raw);
27+
Preconditions.checkArgument(raw.length == props().size());
28+
this.cargo = raw;
29+
30+
}
31+
32+
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.jwoglom.pumpx2.pump.messages.response.control;
2+
3+
import com.google.common.base.Preconditions;
4+
import com.jwoglom.pumpx2.pump.messages.bluetooth.Characteristic;
5+
import com.jwoglom.pumpx2.pump.messages.helpers.Bytes;
6+
import com.jwoglom.pumpx2.pump.messages.Message;
7+
import com.jwoglom.pumpx2.pump.messages.MessageType;
8+
import com.jwoglom.pumpx2.pump.messages.annotations.MessageProps;
9+
import com.jwoglom.pumpx2.pump.messages.request.control.EnterFillTubingModeRequest;
10+
11+
import java.math.BigInteger;
12+
13+
@MessageProps(
14+
opCode=-107,
15+
size=1,
16+
type=MessageType.RESPONSE,
17+
characteristic=Characteristic.CONTROL,
18+
signed=true,
19+
modifiesInsulinDelivery=true,
20+
request=EnterFillTubingModeRequest.class
21+
)
22+
public class EnterFillTubingModeResponse extends Message {
23+
24+
private int status;
25+
26+
public EnterFillTubingModeResponse() {
27+
this.cargo = EMPTY;
28+
}
29+
30+
public EnterFillTubingModeResponse(int status) {
31+
this.cargo = buildCargo(status);
32+
this.status = status;
33+
}
34+
35+
public void parse(byte[] raw) {
36+
raw = this.removeSignedRequestHmacBytes(raw);
37+
Preconditions.checkArgument(raw.length == props().size());
38+
this.cargo = raw;
39+
}
40+
41+
42+
public static byte[] buildCargo(int status) {
43+
return Bytes.combine(
44+
new byte[]{ (byte) status }
45+
);
46+
}
47+
48+
49+
public int getStatus() {
50+
return status;
51+
}
52+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.jwoglom.pumpx2.pump.messages.request.control;
2+
3+
import static com.jwoglom.pumpx2.pump.messages.MessageTester.assertHexEquals;
4+
import static com.jwoglom.pumpx2.pump.messages.MessageTester.initPumpState;
5+
6+
import com.jwoglom.pumpx2.pump.messages.MessageTester;
7+
import com.jwoglom.pumpx2.pump.messages.bluetooth.CharacteristicUUID;
8+
import com.jwoglom.pumpx2.pump.messages.request.control.EnterFillTubingModeRequest;
9+
10+
import org.apache.commons.codec.DecoderException;
11+
import org.junit.Test;
12+
13+
public class EnterFillTubingModeRequestTest {
14+
@Test
15+
public void testEnterFillTubingModeRequest() throws DecoderException {
16+
initPumpState("authenticationKey", 0L);
17+
18+
EnterFillTubingModeRequest expected = new EnterFillTubingModeRequest();
19+
20+
EnterFillTubingModeRequest parsedReq = (EnterFillTubingModeRequest) MessageTester.test(
21+
"017a947a1851eaee1f5595738c382cc5dc5552a2",
22+
122,
23+
1,
24+
CharacteristicUUID.CONTROL_CHARACTERISTICS,
25+
expected,
26+
"007a4aa8482c322b5fd69805e8"
27+
);
28+
29+
assertHexEquals(expected.getCargo(), parsedReq.getCargo());
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.jwoglom.pumpx2.pump.messages.response.control;
2+
3+
import static com.jwoglom.pumpx2.pump.messages.MessageTester.assertHexEquals;
4+
import static com.jwoglom.pumpx2.pump.messages.MessageTester.initPumpState;
5+
6+
import static org.junit.Assert.assertEquals;
7+
8+
import com.jwoglom.pumpx2.pump.messages.MessageTester;
9+
import com.jwoglom.pumpx2.pump.messages.bluetooth.CharacteristicUUID;
10+
11+
import org.apache.commons.codec.DecoderException;
12+
import org.junit.Test;
13+
14+
public class EnterFillTubingModeResponseTest {
15+
@Test
16+
public void testEnterFillTubingModeResponse() throws DecoderException {
17+
initPumpState("authenticationKey", 0L);
18+
19+
EnterFillTubingModeResponse expected = new EnterFillTubingModeResponse(
20+
0
21+
);
22+
23+
EnterFillTubingModeResponse parsedRes = (EnterFillTubingModeResponse) MessageTester.test(
24+
"007a957a1900fea3ee1fe559e33c9fdc97594748e9c9631ee2db4458683f3412",
25+
122,
26+
1,
27+
CharacteristicUUID.CONTROL_CHARACTERISTICS,
28+
expected
29+
);
30+
31+
assertHexEquals(expected.getCargo(), parsedRes.getCargo());
32+
assertEquals(0, parsedRes.getStatus());
33+
}
34+
}

0 commit comments

Comments
 (0)