Add GetVersionResponse and SetUniqueIdResponse; add some definitions
This commit is contained in:
parent
43409eb864
commit
fc4065b71c
|
@ -29,7 +29,7 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
implementation 'commons-codec:commons-codec:1.15'
|
||||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||||
implementation 'com.google.android.material:material:1.3.0'
|
implementation 'com.google.android.material:material:1.3.0'
|
||||||
testImplementation 'junit:junit:4.+'
|
testImplementation 'junit:junit:4.+'
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod;
|
||||||
|
|
||||||
|
public class OmnipodDashManager {
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command;
|
||||||
|
|
||||||
|
public interface Command {
|
||||||
|
CommandType getCommandType();
|
||||||
|
|
||||||
|
byte[] getEncoded();
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command;
|
||||||
|
|
||||||
|
abstract class CommandBase implements Command {
|
||||||
|
CommandBase(CommandType commandType) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public CommandType getCommandType() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.command;
|
||||||
|
|
||||||
|
public enum CommandType {
|
||||||
|
SET_UNIQUE_ID((byte) 0x03),
|
||||||
|
GET_VERSION((byte) 0x07),
|
||||||
|
GET_STATUS((byte) 0x0e),
|
||||||
|
SILENCE_ALERTS((byte) 0x11),
|
||||||
|
PROGRAM_BASAL((byte) 0x13),
|
||||||
|
PROGRAM_TEMP_BASAL((byte) 0x16),
|
||||||
|
BOLUS((byte) 0x17),
|
||||||
|
PROGRAM_ALERTS((byte) 0x19),
|
||||||
|
DELIVERY_INTERLOCK((byte) 0x1a),
|
||||||
|
DEACTIVATE((byte) 0x1c),
|
||||||
|
PROGRAM_BEEPS((byte) 0x1e),
|
||||||
|
STOP_DELIVERY((byte) 0x1f);
|
||||||
|
|
||||||
|
byte value;
|
||||||
|
|
||||||
|
CommandType(byte value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition;
|
||||||
|
|
||||||
|
public class OmnipodEvent {
|
||||||
|
public enum OmnipodEventType {
|
||||||
|
CONNECTED,
|
||||||
|
ALREADY_CONNECTED,
|
||||||
|
FAILED_TO_CONNECT,
|
||||||
|
DISCONNECTED,
|
||||||
|
COMMAND_SENT,
|
||||||
|
GOT_POD_VERSION,
|
||||||
|
SET_UNIQUE_ID,
|
||||||
|
PRIMED_PUMP,
|
||||||
|
FINISHED_ACTIVATION_1,
|
||||||
|
PROGRAMMED_BASAL,
|
||||||
|
PROGRAMMED_ALERTS,
|
||||||
|
SET_BEEPS,
|
||||||
|
INSERTED_CANNULA,
|
||||||
|
FINISHED_ACTIVATION_2,
|
||||||
|
PROGRAMMED_TEMP_BASAL,
|
||||||
|
STARTED_BOLUS,
|
||||||
|
STOPPED_DELIVERY,
|
||||||
|
SILENCED_ALERTS,
|
||||||
|
DEACTIVATED,
|
||||||
|
COMMAND_SENDING,
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition;
|
||||||
|
|
||||||
|
public enum PodStatus {
|
||||||
|
UNINITIALIZED((byte) 0x00),
|
||||||
|
MFG_TEST((byte) 0x01),
|
||||||
|
FILLED((byte) 0x02),
|
||||||
|
UID_SET((byte) 0x03),
|
||||||
|
ENGAGING_CLUTCH_DRIVE((byte) 0x04),
|
||||||
|
CLUTCH_DRIVE_ENGAGED((byte) 0x05),
|
||||||
|
BASAL_PROGRAM_RUNNING((byte) 0x06),
|
||||||
|
PRIMING((byte) 0x07),
|
||||||
|
RUNNING_ABOVE_MIN_VOLUME((byte) 0x08),
|
||||||
|
RUNNING_BELOW_MIN_VOLUME((byte) 0x09),
|
||||||
|
UNUSED_10((byte) 0x0a),
|
||||||
|
UNUSED_11((byte) 0x0b),
|
||||||
|
UNUSED_12((byte) 0x0c),
|
||||||
|
ALARM((byte) 0x0d),
|
||||||
|
LUMP_OF_COAL((byte) 0x0e),
|
||||||
|
DEACTIVATED((byte) 0x0f),
|
||||||
|
UNKNOWN((byte) 0xff);
|
||||||
|
|
||||||
|
private byte value;
|
||||||
|
|
||||||
|
PodStatus(byte value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PodStatus byValue(byte value) {
|
||||||
|
for (PodStatus status : values()) {
|
||||||
|
if (status.value == value) {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
abstract class ActivationResponseBase extends ResponseBase {
|
||||||
|
final ResponseType.ActivationResponseType activationResponseType;
|
||||||
|
|
||||||
|
ActivationResponseBase(ResponseType.ActivationResponseType activationResponseType, byte[] encoded) {
|
||||||
|
super(ResponseType.ACTIVATION_RESPONSE, encoded);
|
||||||
|
this.activationResponseType = activationResponseType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ResponseType.ActivationResponseType getActivationResponseType() {
|
||||||
|
return activationResponseType;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
public interface Response {
|
||||||
|
ResponseType getResponseType();
|
||||||
|
|
||||||
|
byte[] getEncoded();
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
abstract class ResponseBase implements Response {
|
||||||
|
final ResponseType responseType;
|
||||||
|
final byte[] encoded;
|
||||||
|
|
||||||
|
ResponseBase(ResponseType responseType, byte[] encoded) {
|
||||||
|
this.responseType = responseType;
|
||||||
|
this.encoded = Arrays.copyOf(encoded, encoded.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public ResponseType getResponseType() {
|
||||||
|
return responseType;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] getEncoded() {
|
||||||
|
return encoded;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
public enum ResponseType {
|
||||||
|
ACTIVATION_RESPONSE((byte) 0x01),
|
||||||
|
DEFAULT_STATUS_RESPONSE((byte) 0x1d),
|
||||||
|
ADDITIONAL_STATUS_RESPONSE((byte) 0x02),
|
||||||
|
NAK_RESPONSE((byte) 0x06),
|
||||||
|
UNKNOWN((byte) 0xff);
|
||||||
|
|
||||||
|
private byte value;
|
||||||
|
|
||||||
|
ResponseType(byte value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResponseType byValue(byte value) {
|
||||||
|
for (ResponseType type : values()) {
|
||||||
|
if (type.value == value) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum AdditionalStatusResponseType {
|
||||||
|
STATUS_RESPONSE_PAGE_1((byte) 0x01),
|
||||||
|
STATUS_RESPONSE_PAGE_2((byte) 0x02),
|
||||||
|
STATUS_RESPONSE_PAGE_3((byte) 0x03),
|
||||||
|
STATUS_RESPONSE_PAGE_5((byte) 0x05),
|
||||||
|
STATUS_RESPONSE_PAGE_6((byte) 0x06),
|
||||||
|
STATUS_RESPONSE_PAGE_70((byte) 0x46),
|
||||||
|
STATUS_RESPONSE_PAGE_80((byte) 0x50),
|
||||||
|
STATUS_RESPONSE_PAGE_81((byte) 0x51),
|
||||||
|
UNKNOWN((byte) 0xff);
|
||||||
|
|
||||||
|
private byte value;
|
||||||
|
|
||||||
|
AdditionalStatusResponseType(byte value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static AdditionalStatusResponseType byValue(byte value) {
|
||||||
|
for (AdditionalStatusResponseType type : values()) {
|
||||||
|
if (type.value == value) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum ActivationResponseType {
|
||||||
|
GET_VERSION_RESPONSE((byte) 0x15),
|
||||||
|
SET_UNIQUE_ID_RESPONSE((byte) 0x1b),
|
||||||
|
UNKNOWN((byte) 0xff);
|
||||||
|
|
||||||
|
private byte length;
|
||||||
|
|
||||||
|
ActivationResponseType(byte length) {
|
||||||
|
this.length = length;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ActivationResponseType byLength(byte length) {
|
||||||
|
for (ActivationResponseType type : values()) {
|
||||||
|
if (type.length == length) {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,155 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus;
|
||||||
|
|
||||||
|
public final class SetUniqueIdResponse extends ActivationResponseBase {
|
||||||
|
private byte messageType;
|
||||||
|
private short messageLength;
|
||||||
|
private short pulseVolumeInTenThousandthMicroLiter;
|
||||||
|
private short pumpRate;
|
||||||
|
private short primePumpRate;
|
||||||
|
private short numberOfEngagingClutchDrivePulses;
|
||||||
|
private short numberOfPrimePulses;
|
||||||
|
private short podExpirationTimeInHours;
|
||||||
|
private short firmwareVersionMajor;
|
||||||
|
private short firmwareVersionMinor;
|
||||||
|
private short firmwareVersionInterim;
|
||||||
|
private short bleVersionMajor;
|
||||||
|
private short bleVersionMinor;
|
||||||
|
private short bleVersionInterim;
|
||||||
|
private short productId;
|
||||||
|
private PodStatus podStatus;
|
||||||
|
private long lotNumber;
|
||||||
|
private long podSequenceNumber;
|
||||||
|
private long uniqueIdReceivedInCommand;
|
||||||
|
|
||||||
|
public SetUniqueIdResponse(byte[] encoded) {
|
||||||
|
super(ResponseType.ActivationResponseType.SET_UNIQUE_ID_RESPONSE, encoded);
|
||||||
|
|
||||||
|
this.messageType = encoded[0];
|
||||||
|
this.messageLength = (short) (encoded[1] & 0xff);
|
||||||
|
this.pulseVolumeInTenThousandthMicroLiter = ByteBuffer.wrap(new byte[]{encoded[2], encoded[3]}).getShort();
|
||||||
|
this.pumpRate = (short) (encoded[4] & 0xff);
|
||||||
|
this.primePumpRate = (short) (encoded[5] & 0xff);
|
||||||
|
this.numberOfEngagingClutchDrivePulses = (short) (encoded[6] & 0xff);
|
||||||
|
this.numberOfPrimePulses = (short) (encoded[7] & 0xff);
|
||||||
|
this.podExpirationTimeInHours = (short) (encoded[8] & 0xff);
|
||||||
|
this.firmwareVersionMajor = (short) (encoded[9] & 0xff);
|
||||||
|
this.firmwareVersionMinor = (short) (encoded[10] & 0xff);
|
||||||
|
this.firmwareVersionInterim = (short) (encoded[11] & 0xff);
|
||||||
|
this.bleVersionMajor = (short) (encoded[12] & 0xff);
|
||||||
|
this.bleVersionMinor = (short) (encoded[13] & 0xff);
|
||||||
|
this.bleVersionInterim = (short) (encoded[14] & 0xff);
|
||||||
|
this.productId = (short) (encoded[15] & 0xff);
|
||||||
|
this.podStatus = PodStatus.byValue(encoded[16]);
|
||||||
|
this.lotNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[17], encoded[18], encoded[19], encoded[20]}).getLong();
|
||||||
|
this.podSequenceNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[21], encoded[22], encoded[23], encoded[24]}).getLong();
|
||||||
|
this.uniqueIdReceivedInCommand = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[25], encoded[26], encoded[27], encoded[28]}).getLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getMessageType() {
|
||||||
|
return messageType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getMessageLength() {
|
||||||
|
return messageLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getPulseVolumeInTenThousandthMicroLiter() {
|
||||||
|
return pulseVolumeInTenThousandthMicroLiter;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getDeliveryRate() {
|
||||||
|
return pumpRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getPrimeRate() {
|
||||||
|
return primePumpRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getNumberOfEngagingClutchDrivePulses() {
|
||||||
|
return numberOfEngagingClutchDrivePulses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getNumberOfPrimePulses() {
|
||||||
|
return numberOfPrimePulses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getPodExpirationTimeInHours() {
|
||||||
|
return podExpirationTimeInHours;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getFirmwareVersionMajor() {
|
||||||
|
return firmwareVersionMajor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getFirmwareVersionMinor() {
|
||||||
|
return firmwareVersionMinor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getFirmwareVersionInterim() {
|
||||||
|
return firmwareVersionInterim;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getBleVersionMajor() {
|
||||||
|
return bleVersionMajor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getBleVersionMinor() {
|
||||||
|
return bleVersionMinor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getBleVersionInterim() {
|
||||||
|
return bleVersionInterim;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getProductId() {
|
||||||
|
return productId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PodStatus getPodStatus() {
|
||||||
|
return podStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLotNumber() {
|
||||||
|
return lotNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPodSequenceNumber() {
|
||||||
|
return podSequenceNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getUniqueIdReceivedInCommand() {
|
||||||
|
return uniqueIdReceivedInCommand;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public String toString() {
|
||||||
|
return "SetUniqueIdResponse{" +
|
||||||
|
"messageType=" + messageType +
|
||||||
|
", messageLength=" + messageLength +
|
||||||
|
", pulseVolume=" + pulseVolumeInTenThousandthMicroLiter +
|
||||||
|
", pumpRate=" + pumpRate +
|
||||||
|
", primePumpRate=" + primePumpRate +
|
||||||
|
", numberOfEngagingClutchDrivePulses=" + numberOfEngagingClutchDrivePulses +
|
||||||
|
", numberOfPrimePulses=" + numberOfPrimePulses +
|
||||||
|
", podExpirationTimeInHours=" + podExpirationTimeInHours +
|
||||||
|
", softwareVersionMajor=" + firmwareVersionMajor +
|
||||||
|
", softwareVersionMinor=" + firmwareVersionMinor +
|
||||||
|
", softwareVersionInterim=" + firmwareVersionInterim +
|
||||||
|
", bleVersionMajor=" + bleVersionMajor +
|
||||||
|
", bleVersionMinor=" + bleVersionMinor +
|
||||||
|
", bleVersionInterim=" + bleVersionInterim +
|
||||||
|
", productId=" + productId +
|
||||||
|
", podStatus=" + podStatus +
|
||||||
|
", lotNumber=" + lotNumber +
|
||||||
|
", podSequenceNumber=" + podSequenceNumber +
|
||||||
|
", uniqueIdReceivedInCommand=" + uniqueIdReceivedInCommand +
|
||||||
|
", activationResponseType=" + activationResponseType +
|
||||||
|
", responseType=" + responseType +
|
||||||
|
", encoded=" + Arrays.toString(encoded) +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,128 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus;
|
||||||
|
|
||||||
|
public final class VersionResponse extends ActivationResponseBase {
|
||||||
|
|
||||||
|
private final byte messageType;
|
||||||
|
private final short messageLength;
|
||||||
|
private final short firmwareVersionMajor;
|
||||||
|
private final short firmwareVersionMinor;
|
||||||
|
private final short firmwareVersionInterim;
|
||||||
|
private final short bleVersionMajor;
|
||||||
|
private final short bleVersionMinor;
|
||||||
|
private final short bleVersionInterim;
|
||||||
|
private final short productId;
|
||||||
|
private final PodStatus podStatus;
|
||||||
|
private final long lotNumber;
|
||||||
|
private final long podSequenceNumber;
|
||||||
|
private final byte rssi;
|
||||||
|
private final byte receiverLowerGain;
|
||||||
|
private final long uniqueIdReceivedInCommand;
|
||||||
|
|
||||||
|
public VersionResponse(byte[] encoded) {
|
||||||
|
super(ResponseType.ActivationResponseType.GET_VERSION_RESPONSE, encoded);
|
||||||
|
|
||||||
|
messageType = encoded[0];
|
||||||
|
messageLength = (short) (encoded[1] & 0xff);
|
||||||
|
firmwareVersionMajor = (short) (encoded[2] & 0xff);
|
||||||
|
firmwareVersionMinor = (short) (encoded[3] & 0xff);
|
||||||
|
firmwareVersionInterim = (short) (encoded[4] & 0xff);
|
||||||
|
bleVersionMajor = (short) (encoded[5] & 0xff);
|
||||||
|
bleVersionMinor = (short) (encoded[6] & 0xff);
|
||||||
|
bleVersionInterim = (short) (encoded[7] & 0xff);
|
||||||
|
productId = (short) (encoded[8] & 0xff);
|
||||||
|
podStatus = PodStatus.byValue((byte) (encoded[9] & 0xf));
|
||||||
|
lotNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[10], encoded[11], encoded[12], encoded[13]}).getLong();
|
||||||
|
podSequenceNumber = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[14], encoded[15], encoded[16], encoded[17]}).getLong();
|
||||||
|
rssi = (byte) (encoded[18] & 0x3f);
|
||||||
|
receiverLowerGain = (byte) ((encoded[18] >> 6) & 0x03);
|
||||||
|
uniqueIdReceivedInCommand = ByteBuffer.wrap(new byte[]{0, 0, 0, 0, encoded[19], encoded[20], encoded[21], encoded[22]}).getLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getMessageType() {
|
||||||
|
return messageType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getMessageLength() {
|
||||||
|
return messageLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getFirmwareVersionMajor() {
|
||||||
|
return firmwareVersionMajor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getFirmwareVersionMinor() {
|
||||||
|
return firmwareVersionMinor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getFirmwareVersionInterim() {
|
||||||
|
return firmwareVersionInterim;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getBleVersionMajor() {
|
||||||
|
return bleVersionMajor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getBleVersionMinor() {
|
||||||
|
return bleVersionMinor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getBleVersionInterim() {
|
||||||
|
return bleVersionInterim;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getProductId() {
|
||||||
|
return productId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PodStatus getPodStatus() {
|
||||||
|
return podStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getLotNumber() {
|
||||||
|
return lotNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPodSequenceNumber() {
|
||||||
|
return podSequenceNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getRssi() {
|
||||||
|
return rssi;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte getReceiverLowerGain() {
|
||||||
|
return receiverLowerGain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getUniqueIdReceivedInCommand() {
|
||||||
|
return uniqueIdReceivedInCommand;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override public String toString() {
|
||||||
|
return "VersionResponse{" +
|
||||||
|
"messageType=" + messageType +
|
||||||
|
", messageLength=" + messageLength +
|
||||||
|
", firmwareVersionMajor=" + firmwareVersionMajor +
|
||||||
|
", firmwareVersionMinor=" + firmwareVersionMinor +
|
||||||
|
", firmwareVersionInterim=" + firmwareVersionInterim +
|
||||||
|
", bleVersionMajor=" + bleVersionMajor +
|
||||||
|
", bleVersionMinor=" + bleVersionMinor +
|
||||||
|
", bleVersionInterim=" + bleVersionInterim +
|
||||||
|
", productId=" + productId +
|
||||||
|
", podStatus=" + podStatus +
|
||||||
|
", lotNumber=" + lotNumber +
|
||||||
|
", podSequenceNumber=" + podSequenceNumber +
|
||||||
|
", rssi=" + rssi +
|
||||||
|
", receiverLowerGain=" + receiverLowerGain +
|
||||||
|
", uniqueIdReceivedInCommand=" + uniqueIdReceivedInCommand +
|
||||||
|
", activationResponseType=" + activationResponseType +
|
||||||
|
", responseType=" + responseType +
|
||||||
|
", encoded=" + Arrays.toString(encoded) +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
import org.apache.commons.codec.DecoderException;
|
||||||
|
import org.apache.commons.codec.binary.Hex;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotSame;
|
||||||
|
|
||||||
|
public class SetUniqueIdResponseTest {
|
||||||
|
@Test
|
||||||
|
public void testValidResponse() throws DecoderException {
|
||||||
|
byte[] encoded = Hex.decodeHex("011B13881008340A50040A00010300040308146CC1000954D402420001");
|
||||||
|
SetUniqueIdResponse response = new SetUniqueIdResponse(encoded);
|
||||||
|
|
||||||
|
assertArrayEquals(encoded, response.getEncoded());
|
||||||
|
assertNotSame(encoded, response.getEncoded());
|
||||||
|
assertEquals(ResponseType.ACTIVATION_RESPONSE, response.getResponseType());
|
||||||
|
assertEquals(ResponseType.ActivationResponseType.SET_UNIQUE_ID_RESPONSE, response.getActivationResponseType());
|
||||||
|
|
||||||
|
assertEquals(ResponseType.ACTIVATION_RESPONSE.getValue(), response.getMessageType());
|
||||||
|
assertEquals(27, response.getMessageLength());
|
||||||
|
assertEquals(5000, response.getPulseVolumeInTenThousandthMicroLiter());
|
||||||
|
assertEquals(16, response.getDeliveryRate());
|
||||||
|
assertEquals(8, response.getPrimeRate());
|
||||||
|
assertEquals(52, response.getNumberOfEngagingClutchDrivePulses());
|
||||||
|
assertEquals(10, response.getNumberOfPrimePulses());
|
||||||
|
assertEquals(80, response.getPodExpirationTimeInHours());
|
||||||
|
assertEquals(4, response.getFirmwareVersionMajor());
|
||||||
|
assertEquals(10, response.getFirmwareVersionMinor());
|
||||||
|
assertEquals(0, response.getFirmwareVersionInterim());
|
||||||
|
assertEquals(1, response.getBleVersionMajor());
|
||||||
|
assertEquals(3, response.getBleVersionMinor());
|
||||||
|
assertEquals(0, response.getBleVersionInterim());
|
||||||
|
assertEquals(4, response.getProductId());
|
||||||
|
assertEquals(PodStatus.UID_SET, response.getPodStatus());
|
||||||
|
assertEquals(135556289L, response.getLotNumber());
|
||||||
|
assertEquals(611540L, response.getPodSequenceNumber());
|
||||||
|
assertEquals(37879809L, response.getUniqueIdReceivedInCommand());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.response;
|
||||||
|
|
||||||
|
import org.apache.commons.codec.DecoderException;
|
||||||
|
import org.apache.commons.codec.binary.Hex;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import info.nightscout.androidaps.plugins.pump.omnipod.dash.driver.pod.definition.PodStatus;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertArrayEquals;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotSame;
|
||||||
|
|
||||||
|
public class VersionResponseTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValidResponse() throws DecoderException {
|
||||||
|
byte[] encoded = Hex.decodeHex("0115040A00010300040208146CC1000954D400FFFFFFFF");
|
||||||
|
VersionResponse response = new VersionResponse(encoded);
|
||||||
|
|
||||||
|
assertArrayEquals(encoded, response.getEncoded());
|
||||||
|
assertNotSame(encoded, response.getEncoded());
|
||||||
|
assertEquals(ResponseType.ACTIVATION_RESPONSE, response.getResponseType());
|
||||||
|
assertEquals(ResponseType.ActivationResponseType.GET_VERSION_RESPONSE, response.getActivationResponseType());
|
||||||
|
|
||||||
|
assertEquals(ResponseType.ACTIVATION_RESPONSE.getValue(), response.getMessageType());
|
||||||
|
assertEquals(21, response.getMessageLength());
|
||||||
|
assertEquals(4, response.getFirmwareVersionMajor());
|
||||||
|
assertEquals(10, response.getFirmwareVersionMinor());
|
||||||
|
assertEquals(0, response.getFirmwareVersionInterim());
|
||||||
|
assertEquals(1, response.getBleVersionMajor());
|
||||||
|
assertEquals(3, response.getBleVersionMinor());
|
||||||
|
assertEquals(0, response.getBleVersionInterim());
|
||||||
|
assertEquals(4, response.getProductId());
|
||||||
|
assertEquals(PodStatus.FILLED, response.getPodStatus());
|
||||||
|
assertEquals(135556289, response.getLotNumber());
|
||||||
|
assertEquals(611540, response.getPodSequenceNumber());
|
||||||
|
assertEquals(0L, response.getRssi());
|
||||||
|
assertEquals(0L, response.getReceiverLowerGain());
|
||||||
|
assertEquals(4294967295L, response.getUniqueIdReceivedInCommand());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue